使用循环从加载的 TXT 文件执行计算时出现问题C++

Trouble performing calculations from loaded TXT file using C++ loop

本文关键字:计算 C++ 问题 执行 文件 循环 加载 TXT      更新时间:2023-10-16

首先,我会将此标记为家庭作业问题,我已经坚持了一个星期,因为我似乎无法弄清楚我做错了什么,我希望 SO 的优秀人员可以再次拯救我(过去一周我已经搜索了 SO 和其他C++网站,但提供的解决方案并没有纠正这个问题 - 但是我可能设置了错误的循环。

赋值:给定一个文本文件编号.txt(其中包含 9,999 个数字,范围从 1 到 10,000 随机排序,连续列表中缺少一个数字),分配将使用 void 函数来确定缺少的整数是什么。

我尝试

过什么:我最后一次尝试包含以下代码:

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
void find_number();
int main()
{
    ...
    find_number();
}
void find_number();
{
    int sum = 0;
    int sum1 = 0;
    int num;
    for (int i = 1; i <= 10000; i++)
        sum += i;
    cout << "The sum of all the numbers between 1 and 10,000 is: " << sum << endl;
    ifstream numbers;
    numbers.open("numbers.txt");
    if (!numbers.good()) {
        return;
        cout << "Error! Unable to open file!";
    }
    if (numbers) {
        numbers >> num;
        sum1 += num;
    }

    numbers.close();
    cout << "The sum of all the numbers contained in the text file "numbers.txt" is: " << sum1 << endl;
cout << "By subtracting the sum of the text file from the sum of 1 to 10,000 the consecutive number missing from the text file is: " << sum - sum1 << endl;
}

我做错了什么?感谢您的任何帮助。

至少有两个错误:

  1. return 语句在诊断输出之前执行

    if (!numbers.good()) {
        return;
        cout << "Error! Unable to open file!";
    }
    
  2. 以下行将执行一次,而不是读取整个文件:

    if (numbers) {
        numbers >> num;
        sum1 += num;
    }
    

可以使用以下建议改进代码:

  • 提取一个号码并同时检查流状态:

    while(numbers >> num) sum1 += num;
    
  • 您无需关闭文件流,它将在其析构函数中自动关闭。

  • 您可以在文件流初始化时打开文件:

    ifstream numbers("numbers.txt");
    

提示:您没有读取整个文件