2011-10-14 5 views
0

안녕 얘들 아 나는 내 과제에서 나를 도와주고 싶다. 나는 그것을 풀려고 노력했지만 몇 가지가 나를 만들 수있다. 및 id데이터 멤버 및 멤버 함수를 사용하여 클래스를 작성하는 방법 C++

문자열 이름; int ID;

bt wt 동적으로 할당 된 등급 배열 인 s : s : S?를 가리키는 포인터는 입니다. 나는 포인터를 선언하는 법을 배웠다 : double * Grades;

  • 이름 : String 형
  • ID : 정수 유형
  • 성적을 여기

    다음과 같은 데이터들과 클래스 StudentGrades 만들기 ...... 할당입니다 : 동적으로 할당 된 Grades 배열에 대한 포인터. 종류 : 포인터는

그것은 다음과 같은 멤버 함수 포함 (* 더블)을 두 배로 :

  • 인수가없는 생성자를
  • 두 개의 인수를 사용하는 생성자 : 문자열과 정수 및 문자열로 이름을 초기화하고 정수로 ID를 초기화합니다.
  • 이름, ID에 대한 기능 설정 및 가져 오기
  • 학생 정보 인쇄 기능입니다. 이름, 이드 및 성적을 인쇄합니다.
  • 클래스의 오버로드 된 할당 연산자는 클래스의
  • 사본 생성자 복사 생성자 및 오버로드 된 할당 연산자의 구문을 사용
  • 개체 개체.

다른 파일에서 사용자에게 StudentGrades 클래스의 네 가지 개체를 만들기위한 데이터를 묻는 메시지를 표시하는 C++ 프로그램을 만듭니다. 첫 번째 객체 (std1)는 5 개의 등급을 가지고 두 번째 (std2)는 6 개의 등급을, 세 번째 (std3)는 4 개의 등급을 가지고 네 번째 (std4)는 등급과 데이터를 가지고 있지 않습니다. 그런 다음 std2를 std4에 복사하고 std1을 std3에 할당하십시오. 그런 다음 스피 문제는 프로그램

#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

을 n은 어디에 어떤 몸이 말해 주실 래요 작동하지 않습니다 BT는 그것을 실행하려고 BT

이봐, 내가 해결 내 임무 네 개의 오브젝트의 세부 사항을 인쇄 동적으로 할당 된 배열은 컴파일 타임에 고정 배열 선언과 달리 런타임까지 특정 크기가 지정되지 않은 배열입니다.

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

정말 고맙습니다. –

+0

예, 더 많은 질문을 할 수는 있지만 숙제를하지 않을 것입니다. –

+0

LOL 아니 offcoures 당신은 걱정하지 마십시오 내가 혼란 abt 것들을 걱정하지 마십시오 우리는 우리가 그것을 위해 사용자로부터 입력을 받아 들일 수없는 기능을 인쇄 할 수 있습니까? –

관련 문제