2014秋C++第14週プロジェクト2参考-名前付き成績表

4312 ワード

カリキュラムのホームページhttp://blog.csdn.net/sxhelijian/article/details/39152703、カリキュラムリソースは雲学堂の「賀先生教室」で同期して展示され、使用するアカウントはカリキュラムのホームページに表示してください. 
【項目2-氏名付き成績表】score[8]配列に8名の同級生のC++成績を格納し、配列string name[8]を1つ増やして初値を付与し、同級生の名前を表す.この2つの配列では、各学生の名前と成績の下標は常に一致しなければならない(例えばname[i]とscore[i]は同じ学生(下標i)の名前とC++成績を表し、そうでなければ冠李戴を張る).(1)成績順の学生のリストを出力する.(2)同級生名順の成績表(ソート対象は文字列)を出力する.(3)データはscore.txtから提供されますが、プログラムはどのように変更しますか?△成績値はEXCELソフトを利用してランダムに生成され、高くなったものは得意になり、低くなったものは気にしないで、その下敷きの古い靴の気持ちを世話してください.
#include<iostream>
#include<string>
using namespace std;
const int num=8;
int main()
{
    int i,j,t;
    string temp;
    string name[num]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
    double score[num]= {79,84,65,89,60,92,78,56};
    //(1)          


    //(2)          


}
    ヒント:ソートでscoreの要素を交換する場合、nameの要素を同時に交換すれば、名前と成績の同期を実現できます(名前を交換せずに成績を交換すると、両者の対応関係が破壊されます).
(1)(2)参考解答:
#include<iostream>
#include<string>
using namespace std;
const int num=8;
int main()
{
    int i,j,t;
    string temp;
    string name[num]= {"zhao","qian","sun","li","zhou","wu","zheng","wang"};
    double score[num]= {79,84,65,89,60,92,78,56};
    //(1)     
    for(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(score[i]<score[i+1])
            {
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
                temp=name[i];
                name[i]=name[i+1];
                name[i+1]=temp;
            }
        }

    cout<<"          :"<<endl;
    for(i=0; i<num; i++)
        cout<<name[i]<<"\t"<<score[i]<<endl;

    //(2)     
    for(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(name[i]<name[i+1])
            {
                temp=name[i];
                name[i]=name[i+1];
                name[i+1]=temp;
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
            }
        }
    cout<<"            :"<<endl;
    for(i=0; i<num; i++)
        cout<<name[i]<<"\t"<<score[i]<<endl;
    return 0;
}

(3)参考解答:
#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(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(score[i]<score[i+1])
            {
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
                temp=name[i];
                name[i]=name[i+1];
                name[i+1]=temp;
            }
        }

    cout<<"          :"<<endl;
    for(i=0; i<num; i++)
        cout<<name[i]<<"\t"<<score[i]<<endl;

    //(2)     
    for(j=0; j<num-1; j++)
        for(i=0; i<num-j-1; i++)
        {
            if(name[i]>name[i+1])
            {
                temp=name[i];
                name[i]=name[i+1];
                name[i+1]=temp;
                t=score[i];
                score[i]=score[i+1];
                score[i+1]=t;
            }
        }

    cout<<endl;
    cout<<"            :"<<endl;
    for(i=0; i<num; i++)
        cout<<name[i]<<"\t"<<score[i]<<endl;
    return 0;
}
===================        CSDN    =================
|== IT                  (     ) ==|
|== C++                  (     ) ==|
|==     ——《    ——  IT      》    ==|
=====  IT       ,                =====