【问题标题】:Read multiple line in text file and write in another text file读取文本文件中的多行并写入另一个文本文件
【发布时间】:2016-08-14 11:24:29
【问题描述】:

这是我的 scores.txt 文件

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

这是5局板球比赛的细节

以上细节的结构:

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

我想在文本文件中获取五个保龄球(计算列)和该保龄球的平均值(第三列值除以第四列)并在终端中打印/显示。

如下:

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

以上文件有六个投球手,但最后一个是重复的。我尝试将其修复为仅五次,因为 score.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;
}

【问题讨论】:

标签: c++ if-statement while-loop io fstream


【解决方案1】:

我认为你的问题是这一行

while(!scores.eof()){

当你读完最后一行,scores.eof()是false,你尝试读另一行,读失败(而scores.eof()变成true),你不测试读是否与或者没有错误,你使用最后一行的两倍。

我建议类似

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 2018-06-27
    • 1970-01-01
    • 2021-11-25
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多