2011-10-14 101 views
0

嗨,大家好,我希望你能幫助我完成我的任務,盡力解決這個問題,但是有一些東西讓我感到:si knw如何創建名稱和編號如何用數據成員和成員函數編寫類C++

字符串名稱; int Id;

bt wt是否意味着指向動態分配的等級數組的指針:s:s:S? 我jst knw如何聲明一個像這樣的指針:double * Grades;

這裏是分配......

與以下數據成員創建一個類StudentGrades:

  • 名稱:String類型
  • 編號:整型
  • 等級:一個指向動態分配的Grades數組的指針。類型是:指針加倍(*雙)

它包括以下部件的功能:

  • 一個無參數的構造
  • 一個構造函數兩個參數:一個字符串和一個整數和使用String初始化Name,使用Integer初始化ID。
  • 設置並獲取名稱的功能,ID爲
  • 學生信息的打印功能。它打印名稱,ID和成績。
  • 類的重載賦值運算符對象
  • 一類的拷貝構造函數對象
  • 使用的語法拷貝構造函數和重載賦值運算符。

在另一個文件中創建一個C++程序,提示用戶輸入數據以創建StudentGrades類的四個對象。第一個對象(std1)有5個等級,第二個(std2)有6個等級,第三個(std3)有4個等級,第四個(std4)沒有等級和數據。 然後將std2複製到std4並將std1分配給std3。然後打印四個對象的細節

嘿,我解決我的任務BT IAM試圖運行它BT的地方問題爲n程序

#include <iostream> 

using namespace std; 

class student_grades{ 
private: 
    string name,n; 
    int Id,i; 
    double* grades[]; 

public: 
    student_grades(); 

    student_grades(sting, int); 

    student_grades(const student_grades&); 

    void set(string name,int Id){ 
     cout << "enter the name and the ID"; 
     cin >> n >> i; 
     n = name; 
     i = Id; 
    } 

    void get(){ 
     return i; 
     return n; 
    } 

    void student_grades (student_grades&opr){ 
     name = name.opr; 
     Id = Id.opr; 
     grades[] = grades[].opr; 
    } 

    void student_info(){ 
     cout << "the name of the student is:" << name; 
     cout << "the id for the srudent is:" << Id; 
     grades = new double[]; 
     cout << "the grades of the student is:" << grades[] << endl; 
     delete []grades; 
    } 

}; 

student_grades::student_grades() {} 

student_grades::student_grades(string name, int Id) { 
    name=" "; 
    Id=0; 
} 

student_grades::student_grades(const student_grades& copy) { 
    name=copy.name; 
    Id=copy.Id; 
} 

int main() { 

    student_grades std1; 
    std1.set(); 
    cin >> std1.grades[5]; 
    std1.get(); 

    student_grades std2; 
    std2.set(); 
    cin >> std2.grades[6]; 
    std2.get(); 

    student_grades std3; 
    std3.set(); 
    cin >> std3.grades[4]; 
    std3.get(); 

    student_grades std4; 
    std4.set(); 
    cin >> std4.grades[]; 
    std4.get(); 

    std1 = std3; 
    std2 = std4; 

    cout << std1 << std2 << std3 << std4; 

    return 0; 
} 

回答

0

一個它不起作用任何機構可以告訴我動態分配的數組是一個數組,直到運行時間才被賦予特定的大小,這與固定數組聲明在編譯時不同。一個固定數組的聲明如下:

int grades[500]; 

該數組將分配內存500點的整數,並保持下去,除非你摧毀它或改變其大小。

創建一個動態分配的數組會看起來更象這樣:

int* grades = NULL; // A declaration in your StudentGrades class 
int n = <get size from somewhere>; // Makes the size "dynamic" 
grades = new int[n]; // This definition could be in your StudentGrades ctor, 
        // with n being a parameter. 

然後,你可以通過初始化所有的數組元素的繼續0或根據需要與其他值填滿你的陣列。當你完成陣列時,清理它。這可能是在你的析構:

delete [] grades; 
grades = NULL; 
+0

非常感謝你洙這是真的有用的BT我可以問更多的QS ?? –

+0

是的,你可以問更多的問題,但我不會爲你做功課。 –

+0

LOL no offcoures你不會這樣做iam jst混淆abt的東西不要擔心 我們如何打印一個函數,我們沒有從用戶那裏輸入它? –

相關問題