匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

classs內class的問題(請高手幫個忙不)

如題,我想寫一個,輸入國英數3科(多次),然後送出會自動加總排名的程式,希望能用一個類別(內有類別)就完成,就是

class Grade_disposition

{

public:

class Grade

{

public:

char name[5];

char id[5];

int chinese;

int english;

int math;

}

int sum()

void ranking()

void print()

};

int Grade_disposition::sum(int chinese, int english, int math)

{

int sum;

sum = chinese + english + math;

return sum;

問題是我排名的成員函式不知道怎麼寫,要如何將每一個算出來的sum直接送進去rank()裡面阿,rank()怎麼知道送進去是不同的物件阿,這部份剛學,不太懂,請高手幫幫忙吧

已更新項目:

不知道如何取出sum的語法

2 個已更新項目:

我想問一下,那Student_data[5]算全域變數,還是區域變數阿@@~~

3 個已更新項目:

已用寄信的方式傳程式碼給你看,幫看一下,3Q~~~~

4 個已更新項目:

[C++ Error] grade.cpp(18): E2293 ) expected

[C++ Error] grade.cpp(29): E2449 Size of 'ranking' is unknown or zero

[C++ Error] grade.cpp(29): E2316 'ranking' is not a member of 'Grade_disposition'

這是錯誤,不知怎改@@~~

1 個解答

評分
  • 1 0 年前
    最佳解答

    建議你先做出一個struct Student裡頭放著學生的資料

    struct Student

    {

    char *name;

    char id;

    int chinese;

    int english;

    int math;

    int sum;

    };

    再把struct Student定為class Grade_disposition的member

    class Grade_disposition

    {

    public:

    Student Student_data[5]; //假設有5個學生

    int sum(int chinese, int english, int math);

    void ranking();

    void print();

    };

    你處理資料的程式全都在class裡頭,而sum的回傳值為int sum,這表示說,當你呼叫Grade_disposition::sum( ),它回回傳一個整數,所以你的main function裡頭也要定義一個int變數去接收它,

    而Grade_disposition::sum( int chinese, int english, int math),傳遞的參數即為學生的各科成績

    void main()

    {

    int sum[5]; //接收Grade_disposition::sum( )的回傳值

    Grade_disposition Grade; //宣告類別為Grade_disposition的物件

    for(int i=0; i<5; j++)

    {

    //把五位學生的個人資料都輸入進去

    Grade.Student_data[i].name=" "

    Grade.Student_data[i].id= ? ;

    Grade.Student_data[i].chinese=?;

    Grade.Student_data[i].english=?;

    Grade.Student_data[i].math=?;

    Grade.Student_data[i].sum=Grade.sum(Grade.Student_data[i].chinese,Grade.Student_data[i].english, Grade.Student_data[i].math);

    //Grade.Student_data[0].sum代表第一位學生的成績總合,

    //Grade.Student_data[1].sum代表第二位依此類推,如此便把每位學生

    //的資料記錄在Student_data[]裡頭了

    }

    至於rank( )的處理,可以去參考資料結構有關sort的部份,最簡單的可用bubble sort,至於你問的"要如何將每一個算出來的sum直接送進去rank()裡面",你可以把整個Student_data[5]; 丟進去

    rank(&Student_data)裡頭,再去進行排序的處理。

    //夜深了愛睏了,我把大概的寫出來,有問題再問齁!!!

    2007-06-18 22:16:10 補充:

    我修改了一些程式,寄給你了

    至於你問的"我想問一下,那Student_data[5]算全域變數,還是區域變數阿@@~~ "

    Student_data[5]不是全域變數,它是屬於class Grade_disposition裡頭的一個成員,也就是你要透過宣告類別為Grade_disposition的物件Grade,

    才能去存取Student_data[5]。有問題再問齁~

還有問題?馬上發問,尋求解答。