2014秋C++第14週プロジェクト3参考-多科成績表

7068 ワード

カリキュラムのホームページhttp://blog.csdn.net/sxhelijian/article/details/39152703、カリキュラムリソースは雲学堂の「賀先生教室」で同期して展示され、使用するアカウントはカリキュラムのホームページに表示してください. 
【項目3-多科成績表】あるクラスは100人を超えない.2次元配列score[][4]で生徒たちの高数,英語,C++成績および総成績を保存する(ここでは生徒の学号を整数型の連続値と仮定し,配列の行下で学号と表記する).その上で、(1)学生の実際の人数numを入力し、各科の成績を入力する際に、3科の成績を入力すると自動的に総得点を求め、データをすべて配列に保存することができる.(2)各科目および総得点の最高成績、最低成績、平均成績を出力する.
#include<iostream>
#include<string>
using namespace std;
void input(double s[][4],int n); //    
void output(double s[][4],int n); //    
double max(double s[][4],int n,int i); //  i       ,i=3    
double min(double s[][4],int n,int i); //  i       
double avg(double s[][4],int n,int i); //  i       


int main()
{
    int i,num;
    string temp;
    double score[100][4]; //      100 ,      
    string course[4]= {"    ","  ","C++","  "};
    cout<<"      :";
    cin>>num;
    //(1)         
    input(score,num);
    //(2)    
    output(score,num);


    //(3)             、    、            ;
    for(i=0; i<4; ++i)
    {
        cout<<course[i]<<"      "<<max(score,num,i)<<", ";
        cout<<"     "<<min(score,num,i)<<", ";
        cout<<"     "<<avg(score,num,i)<<", ";
        cout<<endl;
    }
    return 0;
}
(3)クラスメイトの名前を配列string name[]で表し、名前と成績の下付き文字を一致させる(例えばname[1]とscore[1][0]、score[1][1]、score[1][2]とscore[1][3]が同じクラスメイトのデータを表す).上記のプログラムを書いた上で、最高成績を取った学生のリストを出力してください(1位に並ぶかもしれませんよ).
(4)あなたは今自分で学生の成績管理システムを構想して実現することができて、機能の上で更に拡張することができて、データの記憶手段の上で、ファイルを使います.これは勉強の中で重要なことですが、これは拡張された内容で、休暇中に完成するまで、あなたは先に後の仕事を完成する必要があります.
(1)(2)参考解答:
#include<iostream>
#include<string>
using namespace std;
void input(double s[][4],int n); //    
void output(double s[][4],int n); //    
double max(double s[][4],int n,int i); //  i       ,i=3    
double min(double s[][4],int n,int i); //  i       
double avg(double s[][4],int n,int i); //  i       

int main()
{
    int i,num;
    string temp;
    double score[100][4]; //      100 ,      
    string course[4]= {"    ","  ","C++","  "};
    cout<<"      :";
    cin>>num;
    //(1)         
    input(score,num);
    //(2)    
    output(score,num);

    //(3)             、    、            ;
    for(i=0; i<4; ++i)
    {
        cout<<course[i]<<"      "<<max(score,num,i)<<", ";
        cout<<"     "<<min(score,num,i)<<", ";
        cout<<"     "<<avg(score,num,i)<<", ";
        cout<<endl;
    }

    return 0;
}

void input(double s[][4],int n) //    
{
    cout<<"      (   、  、C++       :)"<<endl;
    for(int i=0; i<n; ++i)
    {
        cin>>s[i][0]>>s[i][1]>>s[i][2];
        s[i][3]=s[i][0]+s[i][1]+s[i][2];
    }
}

void output(double s[][4],int n) //    
{
    cout<<"        :"<<endl;
    cout<<"  \t  \t  \tC++\t  "<<endl;
    for(int i=0; i<n; ++i)
    {
        cout<<i<<'\t'<<s[i][0]<<'\t';
        cout<<s[i][1]<<'\t';
        cout<<s[i][2]<<'\t';
        cout<<s[i][3]<<endl;
    }
}
//  i       ,i=3    ,   
double max(double s[][4],int n,int j)
{
    double m=s[0][j];
    for(int i=1; i<n; ++i)
        if (m<s[i][j])
            m=s[i][j];
    return m;
}
double min(double s[][4],int n,int j)
{
    double m=s[0][j];
    for(int i=1; i<n; ++i)
        if (m>s[i][j])
            m=s[i][j];
    return m;
}
double avg(double s[][4],int n,int j)
{
    double sum=s[0][j];
    for(int i=1; i<n; ++i)
        sum+=s[i][j];
    return sum/n;
}

(3)参考解答
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
void input(double s[][4],string name[],int n); //    
void output(double s[][4],string name[],int n); //    
double max(double s[][4],int n,int i); //  i       ,i=3    
double min(double s[][4],int n,int i); //  i       
double avg(double s[][4],int n,int i); //  i       
void outputByScore(double s[][4],string name[], int n, int i, double si); //   i     si     
int main()
{
    int i,num;
    string temp;
    double score[100][4]; //      100 ,         
    string name[100];
    string course[4]= {"    ","  ","C++","  "};
    cout<<"      :";
    cin>>num;
    //(1)         
    input(score,name,num);
    //(2)    
    output(score,name,num);

    //(3)             、    、            ;
    for(i=0; i<4; ++i)
    {
        cout<<course[i]<<"      "<<max(score,num,i)<<", ";
        cout<<"     "<<min(score,num,i)<<", ";
        cout<<"     "<<avg(score,num,i)<<", ";
        cout<<endl;
    }

    for(i=0; i<4; ++i)
    {
        cout<<course[i]<<"         :";
        outputByScore(score,name,num,i,max(score,num,i)); //   i        
        cout<<endl;
    }
    return 0;
}

void input(double s[][4],string name[],int n) //    
{
    cout<<"      (   、  、  、C++       :)"<<endl;
    for(int i=0; i<n; ++i)
    {
        cin>>name[i]>>s[i][0]>>s[i][1]>>s[i][2];
        s[i][3]=s[i][0]+s[i][1]+s[i][2];
    }
}

void output(double s[][4],string name[],int n) //    
{
    cout<<"        :"<<endl;
    cout<<"  \t  \t  \t  \tC++\t  "<<endl;
    for(int i=0; i<n; ++i)
    {
        cout<<i<<'\t'<<name[i]<<'\t';
        cout<<s[i][0]<<'\t';
        cout<<s[i][1]<<'\t';
        cout<<s[i][2]<<'\t';
        cout<<s[i][3]<<endl;
    }
}
//  i       ,i=3    ,   
double max(double s[][4],int n,int j)
{
    double m=s[0][j];
    for(int i=1; i<n; ++i)
        if (m<s[i][j])
            m=s[i][j];
    return m;
}
double min(double s[][4],int n,int j)
{
    double m=s[0][j];
    for(int i=1; i<n; ++i)
        if (m>s[i][j])
            m=s[i][j];
    return m;
}
double avg(double s[][4],int n,int j)
{
    double sum=s[0][j];
    for(int i=1; i<n; ++i)
        sum+=s[i][j];
    return sum/n;
}

//   i     si     
void outputByScore(double s[][4],string name[], int n, int i, double si)
{
    for(int j=0; j<n; ++j)
    {
        if(abs(s[j][i]-si)<1e-7)  //  j     i      
            cout<<name[j]<<" ";
   }
    return;
}
===================        CSDN    =================
|== IT                  (     ) ==|
|== C++                  (     ) ==|
|==     ——《    ——  IT      》    ==|
=====  IT       ,                =====