Проверка кода программы вычисления факториала - C (СИ)
Формулировка задачи:
Прошу меня извинить, если эту задачу вы видите не в первый раз, но теперь я все сделал сам и хочу узнать, похоже ли оНо на правду. Главная претензия, как я думаю, будет к моему факториалу - наверно правильно это делается через функцию. В общем, что неправильно напишите, где можете подскажите.
[404]
#include <stdio.h> #include <locale.h> main() { setlocale(LC_ALL, "rus"); int n/* значение n*/, x/*значение x*/; float sum/*сумма*/, f=1/*в теории начальное значение факториала*/, k/*решалка*/; scanf("%d", &x); while(sum>0.001) { if(x>=-1 && x<=1) { ++n; f=f*(2*n-1); k=(pow(-1,2*n-1)*pow(x,n))/f; sum+=k; } } printf("%lf", sum); }
Решение задачи: «Проверка кода программы вычисления факториала»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h> #define epsilon 0.001 unsigned long int factorial(unsigned int num) { unsigned long int Result = 1; for (unsigned int i = 2; i <= num; i++) { Result *= i; } // printf("\nn=%u, factorial=%lu", num, Result); return Result; } int main(int argc, char **argv) { unsigned int n /* значение n*/; float x /*значение x*/, sum = 0 /*сумма*/, k = 0 /*решалка*/; //setlocale(LC_ALL, "rus"); do { printf("\n-1 <= x <=+1\n x=?"); scanf("%f", &x); } while ((x < -1) || (x > 1)); n = 1; do { k = (pow(-1, 2*n-1) * pow(x, n)) / (float)factorial(2*n-1); sum += k; printf("\nx=%f n=%-3d addition=%-16f sum=%-16f", x, n, k, sum); n++; } while (abs(k) > epsilon); printf("\nSum = %lf", sum); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д