2016-04-21 95 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

相關問題