【问题标题】:Codecademy - Vectors: OperationsCodecademy - 向量:操作
【发布时间】:2020-07-12 02:34:54
【问题描述】:

我正在 Codecademy 中学习 C++,并且对在更改向量中的值时使用 for 循环有疑问/担忧:

#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";

}

谁能告诉我代码有什么问题?如果 double total 等于 任意数字,则输出将是任意数字。如果 double total 写成 double total; - 输出将是:

总计:$2.07559e-317

这段代码来自 Codecademy “Vectors” C++ 课程。

【问题讨论】:

  • total 在循环内是 int total 您也用于循环变量(这没有任何意义)。然后有一个单独的、不相关的变量double total - 那就是你打印的那个;循环从未接触过它,它的值不受 delivery_order 内容的影响
  • 我刚刚让 Codecademy 课程向我展示了正确的代码。由于误判了课程中代码的布局方式,我误认为将 double total 变量放在 for-loop 下方,这就是输出不正确的原因。在 for-loop 上方编写变量行产生了预期的结果:- 总计:$19.72

标签: c++ loops for-loop vector operation


【解决方案1】:

这是一个您以两种不同方式使用变量总计的实例。由于您在 for 循环中开始 int total,因此它只存在于您的 for 循环中,并在循环结束时被删除。

您应该在循环开始之前实例化您的输出变量,例如

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

更改这些,您的代码应该可以工作

【讨论】:

  • 是的,我看到错误后如何更正代码。 Codecademy 按照您的指示显示它:
  • 感谢您向我展示我正确地更正了代码。
【解决方案2】:
double total = 0.0;

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

        total = total + delivery_order[i];

}

谢谢!

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 2015-07-30
    • 2021-05-31
    • 1970-01-01
    • 2011-11-04
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多