Помощь - Поиск - Пользователи - Календарь
Полная версия: Разложение Sin(x) по формуле Тейлора
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Тёмный Эльф
Программа должна раскладывать Sin(x) по формуле Тейлора. Какой бы я не ввел x, все члены ряда (temp) равны 0, и в результате сумма членов тоже. Подскажите плиз где я ошибся? Кстати, когда я вместо float temp,x,f пишу int temp,x,f, ответы уже не 0, но все равно не те. не могу понять в чем дело!

#include <stdio.h>
int main(void)
{int i; int k;
int n;
float temp; float x; float f;
printf("введите количество членов ряда: ");
scanf("%d",&k);
printf("Enter x: ");
scanf("%d",&x);
temp=x/1; f=x/1;
printf ("%d\n",temp);
n=1;
for (i=1; i<k; i++)
{
temp=(-1)*(temp*((x*x)/((n+1)*(n+2))));
printf("%d\n",temp);
n=n+2;
f=f+temp;
}
printf("Sin(x) = %d\n", f);
return 0;
}
volvo
Ты же перепутал все типы - работаешь с float, а печатаешь его как int ...

#include <stdio.h>

int main(void) {
int i; int k; int n;
float temp; float x; float f; // <--- X

printf("введите количество членов ряда: ");
scanf("%d",&k);
printf("Enter x: ");
scanf("%f",&x); // <--- смотри на спецификатор

temp=(float)x/1; f=(float)x/1; // Здесь нужно явное приведение типов
printf ("%f\n",temp);
n=1;
for (i=1; i<k; i++) {
temp=(-1)*(temp*((x*x)/((n+1)*(n+2))));
printf("%+12.10f\n",temp); // Увеличиваем поле вывода
n=n+2;
f=f+temp; // Можно f += temp;
}

printf("Sin(x) = %+12.10f\n", f); // Тоже работаем с float
return 0;
}

Тёмный Эльф
Точно! Спасибо...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.