Codecademy - Векторы: Операции - PullRequest
0 голосов
/ 12 июля 2020

Я изучаю C ++ в Codecademy, и у меня есть вопрос / беспокойство по поводу использования для l oop при изменении значений в векторе:

#include <iostream>
#include <vector>

int main() {

    std::vector<double> delivery_order;

    delivery_order.push_back(8.99);
    delivery_order.push_back(3.75);
    delivery_order.push_back(0.99);
    delivery_order.push_back(5.99);

    // Calculate the total using a for loop:
    for (int total; total < delivery_order.size(); total++) {
        total = total + delivery_order[total];
    }

    double total = 8.99;

    std::cout << "Total: $" << total << "\n";

}

Может ли кто-нибудь показать мне что не так с кодом? Если двойной итог равно любое число , на выходе будет любое число. Если двойной итог записан как двойной итог; - вывод будет:

Итого: $ 2.07559e-317

Этот код взят из урока C ++ Codecademy "Vectors".

Ответы [ 2 ]

0 голосов
/ 12 июля 2020
double total = 0.0;

    for (int i = 0; i < delivery_order.size(); i++) {

        total = total + delivery_order[i];

}

Спасибо!

0 голосов
/ 12 июля 2020

Это случай, когда вы использовали переменную total двумя разными способами. Поскольку вы начинаете int total внутри вашего for l oop, он существует только внутри вашего for l oop и удаляется в конце l oop.

Вы должны создать экземпляр выходной переменной перед l oop начинается, например,

double total = 0.0;
for (int i = 0; i < delivery_order.size(); i++){
   total = total + delivery_order[i];
}

, измените их, и ваш код должен работать

...