2016-06-11 2 views
-1

주 파일에서 사용자가 입력 한 기호를 기반으로 문자 등급을 반환하지 않는 헤더 파일에서 getGrade() 함수에 문제가 있습니다. 컴파일하고 실행할 때 입력 한 기호에 따라 글자 등급이 표시되지 않습니다.mycourses [i] .getGrade()가 (C++) 아무것도 반환하지 않는 이유는 무엇입니까?

헤더 파일 (course.h)

#include <iostream> 
#include <string> 

using namespace std; 

class Course { 
private: 
    int totalMarks; 
    char grade; 


public: 
    void marksInfo(int tm) 
    { 
     totalMarks = tm; 
    } 

    int getMarks(void) 
    { 
     return totalMarks; 
    } 

    void setGrade(char c) 
    { 
     if(totalMarks <= 39) 
      c = 'E'; 

     if(totalMarks >= 40 && totalMarks <= 49) 
      c = 'D'; 

     if(totalMarks >= 50 && totalMarks <= 64) 
      c = 'C' 
    } 

    char getGrade(void) 
    { 
     return grade; 
    } 
}; 

홈페이지 파일

#include <iostream> 
#include <string> 
#include "course.h" 

using namespace std; 

int main() 
    { 
     int tm; 

     Course course[5]; 

     for (int i = 0; i < 5; i++) 
     { 
      cout << "Subject #" << i+1 << endl; 

      cout << "Total Marks #" << i+1 << ": "; 
      cin >> tm; 

      course[i].marksInfo(tm); 

      cout << endl; 

      course[i].getGrade(); 
     } 

     cout << "Grade: " << course[0].getGrade(); 
    } 
+0

왜 'setGrade'라고 부르지 않습니까? – kfsone

+0

'getGrade'를하기 전에'setGrade'를 사용해야합니다. – NonCreature0714

+0

감사합니다 ... 이제 문자 등급 표시 – nma

답변

1

코드는 결코 grade아무것도에를 설정하지 않습니다. 즉시 다음 totalMarks에 따라 값이 'C'라는 지역 변수을 채우고 그것이 무엇이다

void setGrade(char c) 
{ 
    if(totalMarks <= 39) 
     c = 'E'; 

    if(totalMarks >= 40 && totalMarks <= 49) 
     c = 'D'; 

    if(totalMarks >= 50 && totalMarks <= 64) 
     c = 'C' 
} 

이 기능은 결코 grade 변경되지는 그것을 잊어 : 당신은 또한 문제의-기다리고 있습니다. 나는 당신이 원했던 것이 다음과 같은 것 같다고 생각합니다 :

class Course { 
private: 
    int totalMarks; 
    char grade; 


public: 
    void marksInfo(int tm) 
    { 
     totalMarks = tm; 

     if(totalMarks <= 39) 
      grade = 'E'; 
     else if(totalMarks >= 40 && totalMarks <= 49) 
      grade = 'D'; 
     else if(totalMarks >= 50 && totalMarks <= 64) 
      grade = 'C'; 
     else if(totalMarks >= 65 && totalMarks <= 84) 
      grade = 'B'; 
     else 
      grade = 'A'; 
    } 

    int getMarks(void) 
    { 
     return totalMarks; 
    } 

    char getGrade(void) 
    { 
     return grade; 
    } 
}; 
관련 문제