Помогите найти ошибки

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
request
Сообщения: 5
Зарегистрирован: 16 дек 2009, 02:06

Для целого N и вещественного x вычислить S и P.
16 строка выводит полученные n и x, так вот x получается не тот, который был введен. (Всегда одно и то же значение.)
В конце S и P оказываются равны нулю, чего быть не должно.

Код: Выделить всё

int main()
{
setlocale(LC_ALL, "Russian");
 
int i,n;
double x,s,p;
char str[20];
 
printf("\n\nВведите число N: ");
n = entcontrol(1, 100000);
 
printf("\nВведите число x: ");
fgets(str, 21, stdin);
x=atof(str);
 
printf("S=%d   P=%e", n,x);
 
s=1;
p=x;
for(i=1; i<=n; i++) {s=s/x; p=p*(x-i);};
printf("S=%d   P=%e", s,p);
 
getch();
 
return 0;
}
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

1. Локальные переменные надо инициализировать.
2. Из за причины 1 в буфере str муссор.
3. fgets не записывает 0 в конец строки из за этого строка не правильная с точки зрения С.
Вот из за это всего функция atof и неправильно работает

исправь на это

Код: Выделить всё

...
char str[20];

memset(str, 0, sizeof(str)); // <======== вот это

printf("\n\nВведите число N: ");
...
Ответить