【问题标题】:Adding elements from previous iterations in for loop C++在 for 循环 C++ 中添加来自先前迭代的元素
【发布时间】:2020-07-26 18:56:39
【问题描述】:

我对 C++ 比较陌生,所以这个问题可能看起来很愚蠢,这就是我来这里的原因。 2019 年代码出现,第 1 天。我希望从 .txt 读取到 void data() 的数据在每次迭代后添加到自身并按顺序打印。 这是我到目前为止得到的:

void data() {
    int fuel = 0, forMass = 0, forEach[100], forAll = 0, lines;
    //int MassArr[];
    std::ifstream infile("./Day1Input.txt"); //reading from .txt
    std::string line;


    for (lines = 0; std::getline(infile, line); lines++) {

        fuel = std::stoi(line);
        std::cout << "Module number [" << lines+1 << "]'s Mass = " << fuel << "\n";
        forEach[lines] = fuel / 3 - 2;
        std::cout << "Fuel required = " << forEach[lines] << "\n\n";

        /* *****THIS IS THE TRICKY PART*****
        forMass = (lines>0) ? forEach[lines] =+ fuel / 3 - 2 : forEach[lines];
        std::cout << "Fuel required so far = " << forMass << "\n";

        forAll = forMass += forEach[lines];
        std::cout << "Fuel required for mass and fuel so far = " << forAll << "\n";
        */
    }
}

forMassforAll 不会在每次迭代中递增地添加到自身。同样,如果这太明显了,我很抱歉,但非常感谢任何帮助。谢谢:)

【问题讨论】:

  • 当我完全不确定它应该做什么时,很难知道你做错了什么。
  • 不相关,但既然你正在学习,请摆脱立即使用 c 样式数组的习惯。 forEach 应该是 std::vector&lt;int&gt;std::array&lt;int, 100&gt;

标签: c++ loops for-loop addition


【解决方案1】:

如果你想在forMass变量中累积每个forEach的值,下面这行有问题:

forMass = (lines>0) ? forEach[lines] =+ fuel / 3 - 2 : forEach[lines];

你可以这样修复它:

forMass += forEach[lines];

你不需要检查 lines>0 除非你想在第一次迭代时计算两倍的 forEach[lines] 的值。

还有表达式:

forEach[lines] =+ fuel / 3 - 2 

如果你想再增加一次forEach[lines]是不正确的,在这种情况下你需要使用+=,你写的=+不是一个增量运算符,它相当于(=(退格)+)即: 只是一个带加号的赋值(在这种情况下什么都不做)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2015-07-25
    • 2020-03-03
    相关资源
    最近更新 更多