C++ Помощь с заданием, связанной с функций

#include <cstdio>
#include <clocale>
#include <cmath>
#include <typeinfo>
using namespace std;
int main()
{
    int n, fact, sumfact, e;
    e = 0;
    setlocale(0, "rus");
    printf("Введите целочисленное число - n");
    scanf_s("%d", &n);
    fact = 1;
    float x, s;
    printf("Введите число - x ");
    scanf_s("%f", &x);
    for (int i = 1; i <= n; i++)
    {
        sumfact = i + n;
        for (int r = 1; r <= sumfact; r++)
        {
            fact = fact * r;
        }
        e = e + x / fact;
        fact = 1;
        sumfact = 0;
    }
    printf("%d", e);
}

Помогите, в чем ошибка, выводит ноль , может ошибка в типе данных? Или в чем? Спасибо Задание


Ответы (2 шт):

Автор решения: Zhihar

проблема в целочисленности:

у вас сумма целочислена, хотя каждый ее компонент может быть меньше 1, что в свою очередь приводит к нулевому результату

int n, fact, sumfact, e;
e = e + x / fact;

кроме того на результат вы опять выводите как целочисленный - хотя он представляет собой число с плавающей запятой

printf("%d", e);

переменная s у вас вообще не используется - возможно вы ее хотели в качестве суммы использовать, но забыли

вот так же гораздо чище?

setlocale(0, "rus");

int n;
std::cout << "Введите целочисленное число - n: ";
std::cin >> n;

float x;
std::cout << "Введите число - x: ";
std::cin >> x;

float sum = 0;

for (int i = 1; i <= n; i++)
{
    float fact = 1;
    for (int r = 1; r <= i + n; r++)
    {
        fact *= r;
    }

    sum += x / fact;
}

std::cout << sum << std::endl;
→ Ссылка
Автор решения: Harry

В дополнение к ответу Zhihar - ну не вычисляются факториалы явно, не нужны они здесь. Как и постоянное умножение на x - но это грех поменьше... Смотрите:

введите сюда описание изображения

А значит, хотя бы так:

double sum = 0, term = 1;
for(int i = 1; i <= N; ++i) term *= i;
term = 1/term;
for(int i = 1; i <= N; ++i)
{
    term /= N+i;
    sum += term;
}
sum *= x;

Сравните сами количество выполняемых арифметических операций...

→ Ссылка