2016-04-21 96 views
0

这里是我的scores.txt文件读多行文本文件,并在另一个文本文件写

7 2 11 4 
9 1 30 3 
5 3 20 3 
10 1 10 2 
5 0 50 0 

这是5板球比赛一局以上细节detais

结构:

在文本文件第一列中代表7-overs,2-maiden,11-runs,4-wickets。

我想在文本文件中获得五个投球手(计数列),并在终端中获得该投球手的平均值(第三列值除以第四列)和打印/显示。

象下面这样:

Bowler Average 
1   2.75 
2   10 
3   6.66 
4   5 
5   NA 
6   NA 

上面的文件有六个保龄球选手,但最后一个是repeated.I试图解决它只有五次,因为scores.txt文件有五条线。

这里是我的代码

#include <iostream> 
#include <iomanip> 
#include <fstream> 
using namespace std; 
using std::setw; 

int main(){ 
    float avg; 
    int over,maiden,runs,wickets; 
    ifstream scores; 
    scores.open("scores.txt"); 
    if(!scores){ 
     cout<<"Error \n"; 
     return -1; 
    } 

    ofstream average("average.txt"); 
    if(!average){ 
     cout<<"Error \n"; 
     return -1; 
    } 

    average << "Bowler"<<"\t"<<"Average"<<endl; 
    int i=1; 
    //scores >> over >> maiden >> runs >> wickets; 
    while(!scores.eof()){ 
     scores >> over >> maiden >> runs >> wickets; 
     avg = runs/float(wickets); 
     if(wickets == 0){ 
      average<<i<<"\t"<<"NA"<<endl; 
     }else{ 
      //avg = runs/float(wickets); 
      average << i<<"\t"<<avg<<endl; 

     } 
     i++; 
    } 
    scores.close(); 
    average.close(); 
    return 0; 
} 
+1

的可能的复制[从文本文件中读取直到EOF重复最后一行(http://stackoverflow.com/questions/21647/reading-from-text-file-until -eof-repeats-last-line) – Holt

+0

我的问题是计算平均值,并将文本文件写入为2列。 – Blasanka

回答

1

我觉得你的问题是此行

while(!scores.eof()){ 

当您阅读的最后一行,scores.eof()false,您尝试读取另一行,读失败(并且scores.eof()变为true),则不测试读数是否带有错误,并且使用两倍的最后一行值。

我建议是这样

while(scores >> over >> maiden >> runs >> wickets){ 
    avg = runs/float(wickets); 
+0

我现在可以清楚地了解谢谢。 – Blasanka

相关问题