Один и тот же вывод каждый раз при возврате элементов двойного массива - PullRequest
0 голосов
/ 02 марта 2020

Новичок 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;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...