Разработать программу для вычисления значений заданных выражений - C (СИ)

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

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

Задано натуральные n и m. Разработать программу для вычисления значений заданных выражений. При вычислении выражений использовать рекурсивные процедуры или функции. Условие - Почему-то функция znamennuk неправильно вычисляет значение.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int power (int m)
  5. {
  6. if (m == 1) return 2;
  7. else return 2*power(m-1);
  8. }
  9. double fact (int n)
  10. {
  11. if(n <= 2) return n;
  12. else return n*fact(n-1);
  13. }
  14. float znamennuk (int n)
  15. {
  16. if (n == 1) return (float)1/3;
  17. else return ((float)1/3)*(sqrt(1/fact(n-1)+znamennuk(n-1)));
  18. }
  19. void main()
  20. {
  21. int m, n;
  22. printf("Enter N= ");
  23. scanf("%d", &n);
  24. printf("Enter M= ");
  25. scanf("%d", &m);
  26. //printf("pow 2^%d= %d\n", m, power(m));
  27. // printf("fact(%d)= %lf\n", n,fact(n));
  28. //printf("znamennuk= %f\n", znamennuk(n));
  29. printf("Result= %f\n", power(m)/znamennuk(n));
  30. getch();
  31. }

Решение задачи: «Разработать программу для вычисления значений заданных выражений»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int n;
  6.  
  7. int power (int m)
  8. {
  9.    if (m == 1) return 2;
  10.    else return 2*power(m-1);
  11. }
  12.  
  13. double fact (int n)
  14. {
  15.    if(n <= 2) return n;
  16.    else return n*fact(n-1);
  17. }
  18.  
  19. float znamennuk (int k)
  20. {
  21.    if (k > n)
  22.        return 0.0;
  23.    else
  24.        return 1./3 * sqrt(1. / fact(k) + znamennuk(k+1));
  25. }
  26.  
  27. int main()
  28. {
  29.    int m;
  30.    printf("Enter N= ");
  31.    scanf("%d", &n);
  32.    printf("Enter M= ");
  33.    scanf("%d", &m);
  34.    printf("Result= %f\n", power(m)/znamennuk(1));
  35. return 0;
  36. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с I/O, математическими функциями и основаниями стека вызовов.
  2. Объявляем переменную n типа int, которая будет использоваться в функции main и znamennuk.
  3. Определяем рекурсивную функцию power, которая вычисляет m в степени.
  4. Определяем функцию fact, которая вычисляет факториал числа n.
  5. Определяем функцию znamennuk, которая вычисляет значение znamen.
  6. В функции main запрашиваем у пользователя ввод числа n и сохраняем его в переменную n.
  7. Запрашиваем у пользователя ввод числа m и сохраняем его в переменную m.
  8. Вычисляем значение power(m) и делим его на znamennuk(1).
  9. Выводим результат на экран.
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

13   голосов , оценка 3.923 из 5

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

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

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