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 шт):
проблема в целочисленности:
у вас сумма целочислена, хотя каждый ее компонент может быть меньше 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;
В дополнение к ответу 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;
Сравните сами количество выполняемых арифметических операций...
