簡體   English   中英

讀取文本文件中的多行,然后寫入另一個文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM