Вычислить сумму произведений - 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- переменная для хранения факториала в функцииfactS- переменная для хранения суммы произведений в функцииmain
- Ввод данных:
- Просим пользователя ввести значение
N - Считываем введенное значение с помощью
scanf
- Просим пользователя ввести значение
- Вычисления:
- Используем два вложенных цикла
forдля вычисления суммы произведений- Первый цикл идет от 1 до
N-1 - Второй цикл идет от 1 до
i-1, гдеiэто значение из первого цикла
- Первый цикл идет от 1 до
- Внутри второго цикла добавляем значение факториала
jк переменнойS
- Используем два вложенных цикла
- Вывод результата:
- Выводим значение переменной
Sна экран
- Выводим значение переменной
- Обработка ошибок:
- Не обрабатываем ошибки в данном коде
- Получение итогового результата:
- Программа выводит на экран сумму произведений, которую можно использовать в дальнейшем анализе или расчетах.