C# ПРОГРАММА В общем мне нужно сделать программу которая считывает сумму результата факториалов(каждого, ниже приклеплю формулу и поймете), то есть например задаю цифру 5, мне нужно (3!/(3-1)!) + 5, (4!/(4-1)!) + 5, (5!/(5-1)!) + 5 и т.д. Я вроде бы сделал, но при считывании суммы выходят какие-то неправильные цифры, можете с кодом?
using System;
namespace S4
{
class Program
{
static void Main(string[] args)
{
int n = 5; // количество циклов в факториале
int sum = 0;
int sum1 = 0;
int factorial = 1;
int factorial1 = 1;
int a = n-1;
int rezult= 0;
for (int i = 0; i <= n; i++) // цикл начинаем с 0, т.к. 0! равно 1 и мы будем это суммировать
{
if (i == 0) sum++;
else
{
factorial = factorial * i;
sum = sum + factorial;
}
}
for (int i = 0; i <= a; i++)
{
if (i == 0) sum++;
else
{
factorial1 = factorial1 * i;
sum1 = sum1 + factorial1;
}
rezult = (factorial/factorial1);
Console.WriteLine(rezult);
}
Console.WriteLine("Summa factoriala pri N = " + n + " = " + sum);
Console.WriteLine("Summa factoriala pri N = " + a + " = " + sum1);
Console.Read();
}
}
}
https://i.stack.imgur.com/q0av9.png
Вот тут объяснения как должно мне всё выдавать
#include <iostream>
#include <iomanip>
using namespace std;
int** matrCreate(int n)
{
int** M;
M = new int *[n];
for (int i = 0; i < n; i++)
M[i] = new int [n];
return M;
}
void matrInit(int** M, int n)
{
srand(time(0));
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
M[i][j] = rand()%199 - 99 ;
}
void matrPrint(int** M, int n)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
cout << setw(5) << M[i][j];
cout << endl;
}
}
void matrTransform(int** M, int n)
{
int im, jm, max = -1000, s = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if (M[i][j] > max)
{
max = M[i][j];
im = i;
jm = j;
}
if (i == j)
s += M[i][j];
}
}
M[im][jm] = s;
}
void clearMem(int** M, int n)
{
for (int i = 0; i < n; i++)
{
delete [] M[i];
}
delete [] M;
}
int main()
{
int n;
cin >> n;
int **A;
A = matrCreate(n);
matrInit(A, n);
matrPrint(A, n);
cout << endl;
matrTransform(A, n);
matrPrint(A, n);
clearMem;
return 0;
}