[英]Read multiple line in text file and write in another text file
這是我的scores.txt文件
7 2 11 4
9 1 30 3
5 3 20 3
10 1 10 2
5 0 50 0
這是5個板球運動員比賽局的細節
以上詳細信息的結構:
在文本文件中,第一列代表7翻,2少女,11滑,4門。
我想在文本文件中得到五個禮帽(計數列),並在該終端中打印該禮帽的平均值(第三列值除以第四列),然后在終端中打印/顯示。
如下所示:
Bowler Average
1 2.75
2 10
3 6.66
4 5
5 NA
6 NA
上面的文件有六個禮帽,但最后一個重復了。我嘗試將其修復到只有五次,因為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;
}
我想你的問題是這條線
while(!scores.eof()){
當您讀完最后一行時, scores.eof()
為false
,您嘗試讀取另一行,但讀取失敗(並且scores.eof()
變為true
),您無需測試讀數是否有錯誤然后使用最后一行的兩倍值。
我建議類似
while( scores >> over >> maiden >> runs >> wickets ){
avg = runs/float(wickets);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.