从for循环C ++中的先前迭代中添加元素

问题描述 投票:0回答:1

我对C ++还是比较陌生,所以这个问题似乎很愚蠢,这就是为什么我要来这里。在代码2019年进行的第一天,我希望将从.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++ loops for-loop addition
1个回答
0
投票

如果要在forMass变量中累积每个forEach的值,则以下行有错误:

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

您可以这样解决:

forMass += forEach[lines];

您不需要检查行数> 0,除非您希望在第一次迭代中计算forEach [lines]的值的两倍。

此外,表达式:

forEach[lines] =+ fuel / 3 - 2 

如果要为每行增加另一个时间,这是不正确的,在这种情况下,您需要使用+ =,您写的= +不是增量运算符,仅等于(=(backspace)+),即:只是带有加号的赋值(在此上下文中不执行任何操作)。

© www.soinside.com 2019 - 2024. All rights reserved.