Проверка кода программы вычисления факториала - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Прошу меня извинить, если эту задачу вы видите не в первый раз, но теперь я все сделал сам и хочу узнать, похоже ли оНо на правду. Главная претензия, как я думаю, будет к моему факториалу - наверно правильно это делается через функцию. В общем, что неправильно напишите, где можете подскажите. [404]
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. main()
  4. {
  5. setlocale(LC_ALL, "rus");
  6. int n/* значение n*/, x/*значение x*/;
  7. float sum/*сумма*/, f=1/*в теории начальное значение факториала*/, k/*решалка*/;
  8. scanf("%d", &x);
  9. while(sum>0.001)
  10. {
  11. if(x>=-1 && x<=1)
  12. {
  13. ++n;
  14. f=f*(2*n-1);
  15. k=(pow(-1,2*n-1)*pow(x,n))/f;
  16. sum+=k;
  17. }
  18. }
  19. printf("%lf", sum);
  20. }

Решение задачи: «Проверка кода программы вычисления факториала»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <math.h>
  5.  
  6. #define epsilon 0.001
  7.  
  8. unsigned long int factorial(unsigned int num) {
  9.   unsigned long int Result = 1;
  10.   for (unsigned int i = 2; i <= num; i++) {
  11.     Result *= i;
  12.   }
  13. //  printf("\nn=%u, factorial=%lu", num, Result);
  14.   return Result;
  15. }
  16.  
  17. int main(int argc, char **argv)
  18. {
  19.   unsigned int n /* значение n*/;
  20.   float x /*значение x*/, sum = 0 /*сумма*/, k = 0 /*решалка*/;
  21.  
  22.   //setlocale(LC_ALL, "rus");
  23.   do {
  24.     printf("\n-1 <= x <=+1\n x=?");
  25.     scanf("%f", &x);
  26.   } while ((x < -1) || (x > 1));
  27.   n = 1;
  28.   do {
  29.     k = (pow(-1, 2*n-1) * pow(x, n)) / (float)factorial(2*n-1);
  30.     sum += k;
  31.     printf("\nx=%f n=%-3d addition=%-16f sum=%-16f", x, n, k, sum);
  32.     n++;
  33.   } while (abs(k) > epsilon);
  34.   printf("\nSum = %lf", sum);
  35.   return 0;
  36. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы