Всем добрый день, я только вот начал изучать язык С, и вот делаю задачу Вот я набрал программу но она не работает, помогите разобраться в чем тут ошибка? #include <stdio.h> #include <math.h> int main(){int n; float a=.01,p=-1,s=0; for(n=1;fabs(p)>a;n++)s+=p/=-n; printf("%10.7f\n",s); getchar(); return 0;} Оно вообще не правильно я так понял считает. Пожалуйста укажите мне ошибку, где я не прав тут, и если можно покажите как бы вы написали бы эту программу, буду очень благодарен за любую помощь!
мдауж ты совсем в другом направлении пополз. n! это не -n потом что n! - это факториал. Вообще гоняй цикл он n = 1 и каждый раз увеличивай n на 1. Вычисляя типа y = ((-1) ^ (n+1)) / n! sum += y; И так далее пока разница текущего sum не будет меньше sum + y на 0,01
Во-первых, что это должно выглядеть вот так: Code: #include <stdio.h> #include <math.h> int main() { int n; float a=.01,p=-1,s=0; for(n=1;fabs(p)>a;n++) s+=p/=-n; printf("%10.7f\n",s); getchar(); return 0; } Во-вторых, ты не пояснил — что именно должна делать программа.
Code: #include <stdio.h> #include <math.h> int main() { int n; int k=1; float a=.01,p=-1,s=0; for(n=1;fabs(p)>a;n++) { k*=n; if((pow(-1,n)/k)>a) s+=pow(-1,n)/k; else break; } printf("%10.7f\n",s); getchar(); return 0; } что то такое вроде хотя не пойму где в Вашей программе используется альфа. В общем формула та что приведена на вашей картинке.
пля народ вы меня убиваете, нахера вычислять степень для числа -1 ? если показатель степени четный то результат просто 1, если не четный то так и остается -1 Млять одному впадлу разобраться с домашним заданием и глянуть в лекции, а другим хочется выпендриться и пишут откровенно говоря х*йню. задача отчасти некорректа. Потому что тут не заданы конкретные условия для выполнения. т.е. пока n не станет равным бесконечности. обсурд короче. Другое дело точность. если имеется ввиду что значение модуля вычисления текущего выражения будет меньше альфа, то остановить цикл то тогда есть вариант решения. иначе задача некорректна. Code: int main(int argc, char* argv[]) { int n; float a = 0.01; float sum = 0; float y; int factorial = 1; for (n = 1; ; n++) { factorial *= n; y = (n +1) % 2 == 0 ? 1 : -1; y /= factorial; sum += y; if (fabs(y) < a) { break; } } printf("%10.7f", sum); return 0; }