I/O Stream<文件格式化输入输出>

score.txt

score.txt
Xu Lisa 60 70 80 90 50 40 30 20 10 0
Cheng Kevin 1 2 3 4 5 6 7 8 9 10
Coco Li 11 22 33 44 55 66 77 88 99 100

scoreAvg.txt
Xu Lisa 60 70 80 90 50 40 30 20 10 0    average: 45
Cheng Kevin 1 2 3 4 5 6 7 8 9 10    average: 5.5
Coco Li 11 22 33 44 55 66 77 88 99 100  average: 59.5

程序:

#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

void outAverage(ifstream&, ofstream&);

int main( )
{
    ifstream inStream;
    inStream.open("/Users/br/Documents/C:C++/character/character/score.txt");
    if (inStream.fail()) {
        cout << "inStream opening failed.";
        exit(EXIT_FAILURE);
    }

    ofstream outStream;
    outStream.open("/Users/br/Documents/C:C++/character/character/scoreAvg.txt");
    if (outStream.fail()) {
        cout << "outStream opening failed.";
        exit(EXIT_FAILURE);
    }

    outAverage(inStream, outStream);

    inStream.close();
    outStream.close();

    return 0;
}

void outAverage(ifstream& inStream, ofstream& outStream)
{
    double avg, sum = 0, score;
    char c;
    int count = 0;

    while (! inStream.eof()) {
        inStream.get(c);

        if (c == '\n') {
            avg = sum / count;
            outStream << "\taverage: " << avg;
            sum = 0;
            count = 0;
        }

        if (! isdigit(c))
            outStream << c;
        else {
            inStream.putback(c);
            inStream >> score;
            outStream << score;
            sum += score;
            count++;
        }
    }
    avg = sum / count;
    outStream << "\taverage: " << avg << "\n";
}

程序3

/*
score.txt
Xu Lisa 60 70 80 90 50 40 30 20 10 0
Cheng Kevin 1 2 3 4 5 6 7 8 9 10
Coco Li 11 22 33 44 55 66 77 88 99 100

scoreAvg.txt
Xu Lisa 60 70 80 90 50 40 30 20 10 0    average: 45.00
Cheng Kevin 1 2 3 4 5 6 7 8 9 10    average: 5.50
Coco Li 11 22 33 44 55 66 77 88 99 1e+02    average: 59.50
*/
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <iomanip>

using namespace std;

void outAverage(ifstream&, ofstream&);


int main( )
{
    ifstream inStream;
    inStream.open("/Users/br/Documents/C:C++/character/character/score.txt");
    if (inStream.fail()) {
        cout << "inStream opening failed.";
        exit(EXIT_FAILURE);
    }

    ofstream outStream;
    outStream.open("/Users/br/Documents/C:C++/character/character/scoreAvg.txt");
    if (outStream.fail()) {
        cout << "outStream opening failed.";
        exit(EXIT_FAILURE);
    }

    outAverage(inStream, outStream);

    inStream.close();
    outStream.close();

    return 0;
}

void outAverage(ifstream& inStream, ofstream& outStream)
{
    double avg, sum = 0, score;
    char c;
    int count = 0;

    while (! inStream.eof()) {
        inStream.get(c);

        if (c == '\n') {
            avg = sum / count;
            outStream.setf(ios::fixed);
            outStream.setf(ios::showpoint);
            outStream << "\taverage: " << setprecision(2) << avg;
            outStream.unsetf(ios::fixed);
            outStream.unsetf(ios::showpoint);
            sum = 0;
            count = 0;
        }

        if (! isdigit(c))
            outStream << c;
        else {
            inStream.putback(c);
            inStream >> score;
            outStream << score;
            sum += score;
            count++;
        }
    }
    outStream.setf(ios::fixed);
    outStream.setf(ios::showpoint);
    avg = sum / count;
    outStream << "\taverage: " <<  setprecision(2) << avg << "\n";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值