Разработать программу для вычисления значений заданных выражений - C (СИ)
Формулировка задачи:
Задано натуральные n и m. Разработать программу для вычисления значений заданных выражений. При вычислении выражений использовать рекурсивные процедуры или функции. Условие -
Почему-то функция znamennuk неправильно вычисляет значение.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int power (int m)
- {
- if (m == 1) return 2;
- else return 2*power(m-1);
- }
- double fact (int n)
- {
- if(n <= 2) return n;
- else return n*fact(n-1);
- }
- float znamennuk (int n)
- {
- if (n == 1) return (float)1/3;
- else return ((float)1/3)*(sqrt(1/fact(n-1)+znamennuk(n-1)));
- }
- void main()
- {
- int m, n;
- printf("Enter N= ");
- scanf("%d", &n);
- printf("Enter M= ");
- scanf("%d", &m);
- //printf("pow 2^%d= %d\n", m, power(m));
- // printf("fact(%d)= %lf\n", n,fact(n));
- //printf("znamennuk= %f\n", znamennuk(n));
- printf("Result= %f\n", power(m)/znamennuk(n));
- getch();
- }
Решение задачи: «Разработать программу для вычисления значений заданных выражений»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int n;
- int power (int m)
- {
- if (m == 1) return 2;
- else return 2*power(m-1);
- }
- double fact (int n)
- {
- if(n <= 2) return n;
- else return n*fact(n-1);
- }
- float znamennuk (int k)
- {
- if (k > n)
- return 0.0;
- else
- return 1./3 * sqrt(1. / fact(k) + znamennuk(k+1));
- }
- int main()
- {
- int m;
- printf("Enter N= ");
- scanf("%d", &n);
- printf("Enter M= ");
- scanf("%d", &m);
- printf("Result= %f\n", power(m)/znamennuk(1));
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O, математическими функциями и основаниями стека вызовов.
- Объявляем переменную
n
типа int, которая будет использоваться в функцииmain
иznamennuk
. - Определяем рекурсивную функцию
power
, которая вычисляетm
в степени. - Определяем функцию
fact
, которая вычисляет факториал числаn
. - Определяем функцию
znamennuk
, которая вычисляет значениеznamen
. - В функции
main
запрашиваем у пользователя ввод числаn
и сохраняем его в переменнуюn
. - Запрашиваем у пользователя ввод числа
m
и сохраняем его в переменнуюm
. - Вычисляем значение
power(m)
и делим его наznamennuk(1)
. - Выводим результат на экран.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д