nixp.ru v3.0

27 мая 2017,
суббота,
22:33:44 MSK

DevOps с компанией «Флант»
CIVILIS написал 27 декабря 2006 года в 00:09 (879 просмотров) Ведет себя неопределенно; открыл 6 тем в форуме, оставил 2 комментария на сайте.

Привет, ребят. Если кто знает, помогите с маленькой программкой. Дан массив вещественных случайных чисел (размер массива определяет пользователь, но в диапазоне [3;20]). Определить произведение и результат деления всех чисел массива. Программа готова, но хотелось бы избавиться от goto! Вот код программы:

#include

#include

#include

void main(void)

{

double *a, P=1, D=1;

int n, i;

clrscr();

printf(» ————————————————————————--\n»);

printf(» Program for determination of the product and quotient of all numbers array\n»);

printf(» by dimensionality from 3 before 20\n»);

printf(» ————————————————————————--\n\n»);

printf(«Enter amount of the number from 3 before 20 n=»);

scanf(«%d»,&n);

if (n>20)

{

printf(«\nToo much elements\n»);

goto end;

}

if (n<3)

{

printf(«\nToo little elements\n»);

goto end;

}

a=(double*)malloc(n*sizeof(double));

for (i=0; i

{

printf(«a[%d]=»,i+1); scanf(«%lf»,&a);

if (a==0)

{

printf(«\n The Product P=%f»,a);

printf(«\n The Quotient to get impossible, since on zero to divide it is impossible!»);

goto end;

}

P=P*a;

D=D/a;

}

printf(«\n The Product P=%lf»,P);

printf(«\n The Quotient D=%.10lf»,D);

end:

printf(«\n\n Press any key to exit»);

free(a);

getch();

}

Подскажите пожалуйста: Как избавиться от goto??? Зарание спасибо!

metal

do

{

if(end)

{

break;

}

}while(false);

Например так.

Uncle Theodore

Щас я кончу ржать, и че-нить напишу…

Щас….

А ты в школе немецкий учишь, да?

Щас, еще десять секунд….

Все. Я успокоился.

1. Вместо malloc’a лучше использовать calloc в данном случае.

2. Тебе надо посчитать произведение P всех элементов и число 1/P?

А почему бы тебе так и не сделать, зачем делить на каждый элемент?

3. Если введен ноль, вычисления и ввод надо прервать? Или все равно надо дождаться окончания ввода?

Проще всего (это не самый оптимальный вариант, это лишь минимальная коррекция твоей рограммы)

for (i=0; i
   {
    printf("a[%d]=",i+1); scanf("%lf",&a[i]);
    if (a[i]==0)
    {
     printf("\n The Product  P=%f",a[i]);
     printf("\n The Quotient is impossible to get , since one can't divide
                by zero!");
     break;
    }
    P=P*a[i];
    D=D/a[i];
   }
if(P!=0)
{
 printf("\n The Product  P=%lf",P);
 printf("\n The Quotient D=%.10lf",D);
}
 printf("\n\n                            Press any key to exit");
 free(a);
 getch();
}

Good Luck,

UT

metal

После этого поста я тоже поржал. Саму программу не смотрел.

decvar

.