Страница: 1 |
Страница: 1 |
Вопрос: Как избавиться от goto в СИ?
Добавлено: 27.12.06 00:22
Автор вопроса: Цивильный
Привет, ребят. Если кто знает, помогите с маленькой программкой. Дан массив вещественных случайных чисел (размер массива определяет пользователь, но в диапазоне [3;20]). Определить произведение и результат деления всех чисел массива. Программа готова, но хотелось бы избавиться от goto! Вот код программы:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
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<n; 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??? Зарание спасибо!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Sneaks
Вопросов: 9
Ответов: 84
Профиль | | #1
Добавлено: 27.12.06 00:42
зашел на все топики созданные тобой
искал 10 отличий - не нашел, разве что только в названиях. Не много растроился даже =(
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 27.12.06 00:42
Как-то так...
#include<conio.h>
#include<malloc.h>
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"
} else if (n<3){
printf("\nToo little elements\n"
} else{
a=(double*)malloc(n*sizeof(double));
for (i=0; i<n; i++){
printf("a[%d]=",i+1); scanf("%lf",&a);
if(a[i]==0){
printf("\n The Product P=%f",a);
printf("\n The Quotient to get impossible, since on zero to divide it is impossible!"
break;
}
P=P*a;
D=D/a;
}
printf("\n The Product P=%lf",P);
printf("\n The Quotient D=%.10lf",D);
}
printf("\n\n Press any key to exit"
free;
getch();
}
Номер ответа: 3
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #3
Добавлено: 27.12.06 11:13
Или Switch
?
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 27.12.06 12:28
а?
Номер ответа: 5
Автор ответа:
Цивильный
Вопросов: 33
Ответов: 15
Профиль | | #5
Добавлено: 28.12.06 00:33
Спасибо большое, SHARP, все нормально работает.
Номер ответа: 6
Автор ответа:
Djon
Вопросов: 61
Ответов: 471
Web-сайт:
Профиль | | #6
Добавлено: 28.12.06 01:56
Вообщето легче всего было бы использовать do while