2013-08-23 2 views
1

Здравствуйте, ребята, любезно взгляните на мою программу и помогите мне найти, что с ней не так. Он компилируется и также запускается. Программа просит пользователя ввести оценки, после ввода, он будет вычислять общий уровень prelim, и он должен отображать соответствующее примечание общей оценки. Но это моя проблема, соответствующее замечание вообще не отображается, оно просто выводит неверный ввод комментария. Пожалуйста, помогите мне.Объявление функций

#include<iostream> 
#include<conio.h> 

using namespace std; 

void computePG(double& pScore); 
void Remark(double pScore); 

int main() 
{ 
    double cPrelimGrade; 

    cout << "\n\n\tThis program is intended to compute the prelim grade\n"; 

    computePG(cPrelimGrade); 
    Remark(cPrelimGrade); 

getch(); 
} 


    void computePG(double& pScore) 
    { 
    double q1, q2, q3, pe, cpScore = 0; 

    cout << "\n\n\tPlease enter your score in quiz 1: "; 
    cin >> q1; 
    cout << "\tPlease enter your score in quiz 2: "; 
    cin >> q2; 
    cout << "\tPlease enter your score in quiz 3: "; 
    cin >> q3; 
    cout << "\tPlease enter your score in prelim exam: "; 
    cin >> pe; 
    cpScore = ((q1/30) * 20) + ((q2/50) * 20) + ((q3/40) * 20) + ((pe/100) * 40); 
    cout << "\n\n\tThe computed PG is: " << cpScore; 
    } 


    void Remark(double pScore) 
    {  
     if (pScore<=59&&pScore>=0) 
      cout << "\n\tRemark: E"; 
     else if (pScore<=69&&pScore>=60) 
      cout << "\n\tRemark: D"; 
     else if (pScore<=79&&pScore>=70) 
      cout << "\n\tRemark: C"; 
     else if (pScore<=89&&pScore>=80) 
      cout << "\n\tRemark: B"; 
     else if (pScore<=100&&pScore>=90) 
      cout << "\n\tRemark: A"; 
     else 
      cout << "\n\t\tInvalid input"; 
    } 
+2

'computePG' никогда не присваивает' pScore', которая является выходной переменной, которая передается в 'Remark'. (Который вообще не является 'p' для указателя.) – Rup

+1

Вы пробовали отлаживать программу? Вы знаете, контрольные точки настроек и просмотр значений переменных и т.п. ... – dwo

+0

'conio.h' - заголовок DOS (предоставляющий' getch'). Он не переносится, и вы, вероятно, должны заменить 'getch();' с помощью 'cin.get();' или 'cin.ignore();' вместо этого. – dyp

ответ

5

Вы передаете pScore в качестве ссылки, но не назначая никакого значения к нему, вместо того, чтобы вы храните результат в локальной переменной cpScore:

void computePG(double& pScore) 
    { 
    double q1, q2, q3, pe, cpScore = 0; 

    cout << "\n\n\tPlease enter your score in quiz 1: "; 
    cin >> q1; 
    cout << "\tPlease enter your score in quiz 2: "; 
    cin >> q2; 
    cout << "\tPlease enter your score in quiz 3: "; 
    cin >> q3; 
    cout << "\tPlease enter your score in prelim exam: "; 
    cin >> pe; 
    pScore = ((q1/30) * 20) + ((q2/50) * 20) + ((q3/40) * 20) + ((pe/100) * 40); 
    cout << "\n\n\tThe computed PG is: " << pScore; 
    } 
+1

Вы правы! Я забыл, что переменная, которая содержит общий балл, это «pScore», а не «cpScore». Большое спасибо :) –

0

Переменная double& pScore не обновляется функцией computePG.

Смежные вопросы