Новичок C студент здесь. Я пытаюсь написать функцию с именем seriesSum, которая принимает один целочисленный параметр и возвращает сумму n чисел, следуя приведенному ниже шаблону.
// seriesSum(1) => 1 = "1.00"
// seriesSum(2) => 1 + 1/4 = "1.25"
// seriesSum(5) => 1 + 1/4 + 1/7 + 1/10 + 1/13 = "1.57"
Просто суммируя n членов вместе со знаменателем каждого термина, увеличивающимся на три каждого члена. Программа должна возвращать сумму с двумя десятичными разрядами и возвращать 0,00, если n = 0. n будет задан только натуральные числа (положительные числа и 0).
Однако каждый раз, когда я вводю значение для n, я получаю 1,00 как вывод каждый раз . Я не пытаюсь переписать всю логику c в моей программе; Я просто надеюсь, что кто-то может указать на ошибку и почему я получаю 1,00 каждый раз. Мой код ниже. Заранее спасибо.
#include <iostream>
#include <string>
using namespace std;
double seriesSum(int n);
int main()
{
int n = 2;
seriesSum(n);
}
// write a function which returns the sum of following series up to nth
// parameter.
// need to round the answer to 2 decimal places and return as a string
// if the given value is 0, must return 0.00
// will only be given natural numbers as arguments
double seriesSum(int n)
{
double nDouble[n];
if (n == 0)
{
nDouble[0] = 0;
cout.precision(2);
cout << fixed << nDouble[0] << endl;
return nDouble[0];
}
else
{
nDouble[0] = 1;
int i;
for (i = 1; i < n; i++)
{
nDouble[i] = (1) / (1 + (3 * i));
}
double sum = 0;
int j;
for (j = 0; j < n; j++)
{
sum += nDouble[j];
}
cout.precision(2); // setting to 2 decimal places
cout << fixed << sum << endl; // not sure what fixed means but it works
return sum;
}
}