我正在尝试编写一个C ++程序,它从文件中读取数字并在屏幕上显示其总数和最大值。 如果下面给出的一个或多个条件成立,程序应该停止: 1.总数已超过5555。 2.已到达文件末尾。 注意我必须同时使用文件结束和标记控制来解决这个问题。
示例输入
1000 2500 1500 1100 3300 1200输出应该是 6100 2500
输出我得到: 7500 2500
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream infile;
ofstream outfile;
int num;
int sum=0;
int max=0;
bool found=false;
infile.open("Input.txt");
outfile.open("output.txt");
if(!infile)
cout<<"File Can not open \n";
else
{
infile>>num;
while(!infile.eof())
{
infile>>num;
while(!found)
{
if(num>=max)
max=num;
sum+=num;
if(sum>=5555)
found=true;
}
}
}
outfile<<sum<<endl;
outfile<<max<<endl;
infile.close();
outfile.close();
}
答案 0 :(得分:1)
你的程序中有一个小问题。读取的第一个数字不用于计算总和。
infile>>num; // The first number. Read and not used.
while(!infile.eof())
{
infile>>num; // The second number and subsequent numbers.
您可以使用一个while
循环而不是两个循环,并使用以下方法解决问题:
while( sum < 5555 && (infile >> num) )
{
if(num>=max)
max=num;
sum+=num;
}
您也不需要found
变量。