我对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";
*/
}
}
forMass
和forAll
不会在每次迭代中逐渐增加。再次,很抱歉,如果这太明显了,但是任何帮助将不胜感激。谢谢:)
如果要在forMass变量中累积每个forEach的值,则以下行有错误:
forMass = (lines>0) ? forEach[lines] =+ fuel / 3 - 2 : forEach[lines];
您可以这样解决:
forMass += forEach[lines];
您不需要检查行数> 0,除非您希望在第一次迭代中计算forEach [lines]的值的两倍。
此外,表达式:
forEach[lines] =+ fuel / 3 - 2
如果要为每行增加另一个时间,这是不正确的,在这种情况下,您需要使用+ =,您写的= +不是增量运算符,仅等于(=(backspace)+),即:只是带有加号的赋值(在此上下文中不执行任何操作)。