Вычислить сумму произведений - C (СИ)
Формулировка задачи:
Дано натуральное число N. Вычислить
S= сумма (от i=1 до N) произведений(от j=1 до i ) j! / i!
Вот я написал, но чёт не работает.
ПЛЗ, проверьте и исправть, если можете
#include<stdio.h> #include<math.h> int fact(int i) { int f = 1; if(!i || i == 1) return 1; do f *= i--; while (i != 0); return f; } int main() { int i,j,n ; float s=0,k=1 ; printf("Vvedite n: "); scanf ("%d", &n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { k*=fact(j)/fact(i) ; //printf("%d\n",k); } s+=k; } printf("\n%.2f\n",s); return 0; }
Решение задачи: «Вычислить сумму произведений»
textual
Листинг программы
#include <stdio.h> #include <math.h> int fact(int i) { int f = 1; if(!i || i == 1) return 1; do f *= i--; while (i != 0); return f; } int main() { int i, N, j; double S = 0; printf("Enter N: "); scanf("%d", &N); for(i = 1; i < N; ++i) for(j=1;j<i; j++) S += (double)(fact(j)) / (double)fact(i); printf("\n%f\n", S); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.h
для работы с консольюmath.h
для работы с математическими функциями
- Функция вычисления факториала:
int fact(int i)
- Используем цикл
do-while
для вычисления факториала - Переменная
f
инициализируется единицей - Если
i
равно 0 или 1, то возвращаем 1 - В противном случае, в цикле умножаем
f
наi
и уменьшаемi
на 1 - Возвращаем итоговое значение
f
- Основная функция программы:
int main()
- Просим пользователя ввести значение
N
- С помощью
scanf
считываем введенное значение и сохраняем его в переменнойN
- Используем два вложенных цикла
for
- Первый цикл идет от 1 до
N-1
- Второй цикл идет от 1 до
i-1
, гдеi
это значение из первого цикла
- Первый цикл идет от 1 до
- Внутри второго цикла добавляем значение факториала
j
к переменнойS
- Выводим значение переменной
S
на экран - Возвращаем 0, чтобы указать, что программа успешно завершилась
- Переменные:
i
иj
- переменные-счетчики для цикловN
- переменная для хранения введенного значенияf
- переменная для хранения факториала в функцииfact
S
- переменная для хранения суммы произведений в функцииmain
- Ввод данных:
- Просим пользователя ввести значение
N
- Считываем введенное значение с помощью
scanf
- Просим пользователя ввести значение
- Вычисления:
- Используем два вложенных цикла
for
для вычисления суммы произведений- Первый цикл идет от 1 до
N-1
- Второй цикл идет от 1 до
i-1
, гдеi
это значение из первого цикла
- Первый цикл идет от 1 до
- Внутри второго цикла добавляем значение факториала
j
к переменнойS
- Используем два вложенных цикла
- Вывод результата:
- Выводим значение переменной
S
на экран
- Выводим значение переменной
- Обработка ошибок:
- Не обрабатываем ошибки в данном коде
- Получение итогового результата:
- Программа выводит на экран сумму произведений, которую можно использовать в дальнейшем анализе или расчетах.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д