Программа должна раскладывать 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
28.02.2007 4:14
Ты же перепутал все типы - работаешь с 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; }
Тёмный Эльф
28.02.2007 4:32
Точно! Спасибо...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.