Сумма элементов внутри вектора C ++ - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь вычислить сумму всех чисел с плавающей точкой в ​​векторе.Пользовательские данные - это количество элементов в векторе и числах с плавающей запятой.По какой-то причине сумма выводится как 3.01734 ...

Код:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    float n, temp, sum;              // integer variables declaration
    vector<float> nums;             // declaration of "nums" vector
    cin>>n;                        // number of elements in the vector "nums"

    for(int i=0; i<n; i++){      
        cin >> temp;            // user input for "temp" variable
        nums.push_back(temp);  // adds(pushes) "temp" to "nums" vectors
    }                         

    for(int j=0; j<(short)nums.size(); j++){ 
        sum+=nums.at(j);   // adds the "j" element of "nums" vetor to sum
    }                   

    cout << sum;        // outputs the sum

    return 0;
}

Редактировать: этот код не работает, так как «сумма» не инициализирована.Нам нужно инициализировать «сумму» до 0,0 вручную, потому что в противном случае она будет хранить «мусор» в памяти или, если мы установим ее на 0, она округлит «сумму» (которая является числом с плавающей запятой) до целого числа (целого числа),

1 Ответ

0 голосов
/ 02 марта 2019

Когда вы не инициализируете переменные, они начинаются со значения «мусора», которое находится в их адресе памяти.Поэтому, когда вы перебираете вектор и увеличиваете его каждый раз по каждому значению, вы фактически начинаете считать со случайного числа, с которого начинаете, вместо 0. Вот как это должно быть (не проверено):

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    float n = 0, temp = 0, sum = 0; // initialized variables as 0.
    vector<float> nums;
    cin >> n;

    for(int i=0; i<n; i++){
        cin >> temp;
        nums.push_back(temp);
    }

    nums.resize(n); // to be honest I don't really understand why this is needed

    // note: you can use the letter i again, when you declare a variable inside a scope, 
    // it's only declared for that scope.
    for(int j=0; j<(short)nums.size(); j++){
        sum+=nums.at(j);
    }

    cout << sum;

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