天天看点

第十四周项目二(3)——带姓名的成绩单

/* Copyright (c) 2014, 烟台大学计算机学院
 * All rights reserved.
 * 文件名称:test.cpp
 * 作者:陈丹妮
 * 完成日期:2014年 12 月 01 日
 * 版 本 号:v1.0
 *
 * 问题描述: 无
 * 输入描述: 输入一些整型数
 * 程序输出: 输出成绩单
 */
#include <fstream>   //操作文件必写
#include <cstdlib>   //调用exit(1)需要包含cstdlib
#include <iostream>
#include <string>
using namespace std;
const int N=100;
int main()
{
    int i,j,t;
    string name[N];
    double score[N];
    int num=0;    //实际的学生人数
    string temp;
    ifstream infile("score.txt",ios::in);
    if(!infile)
    {
        cerr<<"open error"<<endl;
        exit(1);
    }
    while(infile>>name[num]>>score[num])   //当到达文件尾,则循环处理结束
    {
        num++;
    }
    infile.close();
    //(1)按成绩排序并输出结果
    for(i=0; i<num-1; i++)
        for(j=0; j<num-1-i; j++)
        {
            if(score[j]<score[j+1])
            {
                t=score[j];
                score[j]=score[j+1];
                score[j+1]=t;
                temp=name[j];
                name[j]=name[j+1];
                name[j+1]=temp;
            }
        }
    cout<<"按同学成绩排序后的结果是:"<<endl;
    for(j=0; j<num; j++)
        cout<<name[j]<<"\t"<<score[j]<<endl;

    //(2)按姓名排序并输出结果
    for(i=0; i<num-1; i++)
        for(j=0; j<num-i-1; j++)
        {
            if(name[j]<name[j+1])
            {
                temp=name[j];
                name[j]=name[j+1];
                name[j+1]=temp;
                t=score[j];
                score[j]=score[j+1];
                score[j+1]=t;
            }
        }
    cout<<"按同学姓名排序后的结果是:"<<endl;
    for(j=0; j<num; j++)
        cout<<name[j]<<"\t"<<score[j]<<endl;
    return 0;
}