标志控制的循环eof循环

时间:2015-05-13 04:56:38

标签: c++ loops

我正在尝试编写一个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();
}

1 个答案:

答案 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变量。