【问题标题】:How do you count the number of integers in a file? (c++)你如何计算文件中的整数个数? (c++)
【发布时间】:2016-07-06 12:44:12
【问题描述】:

我正在开发一个程序,可以计算文件中数字的数量,并将它们加在一起。

例如。假设有一个包含数字“1 5 6 2 56 8”的 .txt 文件。如您所见,有 6 个数字,总和为 78。我自己计算了这些数字。最后,我希望程序导出另一个文件,告诉我“数字的数量:,并且数字的总和是:”

如何修改我的程序以对任何文件执行此操作?

这是我的源代码:

ifstream inFile;
int value1, value2, value3, value4, value5, value6, value7, value8, value9, value10,
    value11, value12, value13, value14, value15, value16, value17, value18, value19,
    value20;
double average, sum;

//OPEN FILE
inFile.open("data.txt");

//ASSIGN VALUES WITH VARIABLES
inputFile >> value1;
inputFile >> value2;
inputFile >> value3;
inputFile >> value4;
inputFile >> value5;
inputFile >> value6;
inputFile >> value7;
inputFile >> value8;
inputFile >> value9;
inputFile >> value10;
inputFile >> value11;
inputFile >> value12;
inputFile >> value13;
inputFile >> value14;
inputFile >> value15;
inputFile >> value16;
inputFile >> value17;
inputFile >> value18;
inputFile >> value19;
inputFile >> value20;

// CLOSE FILE
input.close();

//CALCULATE THE SUM
sum = value1 + value2 + value3 + value4 + value5 + value6 + value7 + value8 + value9 + value10 +
    value11 + value12 + value13 + value14 + value15 + value16 + value17 + value18 + value19 + value20;


//CALCULATE THE AVERGAGE
average = sum / 20;

ofstream outputFile;
outputFile.open("results.txt");
outputFile << "The number of the values is: 20" << endl;
outputFile << "The total is: " << sum << endl;
outputFile << "The average is: " << average << endl;
outputFile.close();

return 0;

}

【问题讨论】:

标签: c++


【解决方案1】:

如果文件中不可能有字符串,则可以将整个字符串拆分,对每个整数求和,否则可以先拆分并检查每个是否为整数,如果是,将其添加到总和中.

对于拆分,我使用this,对于检查字符串是否为整数,您可以使用this one。

【讨论】:

  • 如果您知道您正在处理多少个数字,您可以将它们读入一个数组并在 for 循环中对它们求和,并计算数量。
  • 在固定数字上工作几乎从来都不是一个好主意。如果你得到不同数量的整数,你的程序将无法工作。所以你需要小心
【解决方案2】:

您应该了解 for 循环while 循环。在这种情况下,while 循环 可能最适用:

int main() {
    std::ifstream inFile("data.txt");
    int value, sum = 0, count = 0;

    while(inFile >> value) {
        sum += value;
        count += 1;
    }

    assert(count > 0);
    std::cout << "sum: " << sum << "\n";
    std::cout << "average: " << (double) sum / count << "\n";
}

【讨论】:

  • 谢谢!我仍然习惯于 C++。我学习了 for 循环、while 和 do while 循环。我只需要了解循环和我学到的所有东西在大多数情况下都可以应用于几乎任何东西。
猜你喜欢
  • 2016-04-17
  • 1970-01-01
  • 2016-01-31
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
相关资源
最近更新 更多