2013-08-23 162 views
-5

伙计们请再次帮助我与我的程序。我改变了代码的顺序。请检查我的代码有什么问题。它运行,但它不执行它应该做的任务。它应该计算用户输入的等级总数并显示相应的评论。不幸的是,它不工作:(请帮我声明函数第二部分

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

using namespace std; 

void computePG(int& PG); 
void Remark(int PG); 

    int x, y, z, w, p; 
    int prelimGrade,yourRemark,PG; 
    int preliminaryGrade; 

int main() 
{ 
    int pGrade; 

cout<<"Programmed by: Katrina G. Gozo, 1ISC"; 
cout<<endl<<"\nDate: Aug. 23,2013"; 
cout<<endl<<"\nThis program intends to compute the PG and make the necessary remarks"; 

cout<<"\n\nPlease enter your score on quiz 1 "; 
cin>>x; 

cout<<"\nPlease enter your score on quiz 2 "; 
cin>>y; 

cout<<"\nPlease enter your score on quiz 3 "; 
cin>>z; 

cout<<"\nPlease enter your score on prelims "; 
cin>>p; 


computePG(pGrade); 
Remark(pGrade); 


getch(); 
} 

void computePG(int& PG) 
{ 
    PG = x/30 * 20 + y/50 * 20 + z/40 * 20 + w/100 * 40; 
    cout << "\nYour prelim grade is " << PG; 

} 

void Remark(int PG) 
{ 
    if (PG>=90) 
     cout<<"A." <<endl; 
    else if (PG>=80) 
      cout<<"B."<<endl; 
    else if (PG>=70) 
      cout<<"C."<<endl; 
    else if (PG>=60) 
      cout<<"D."<<endl; 
    else 
      cout<<"E."<<endl; 
} 
+1

定义“不起作用”。 – Michael

+1

学习如何使用调试器的时间 – Cornstalks

+2

我希望这是您输出的名字! – pamphlet

回答

1

你最有可能发生冲突运行的整数运算的注意事项:将一个整数被另一个整数时,你会得到一个整数(取整到零) 。

所以你需要使用double作为PGpGrade类型,并在computePG浮点数字常量,以及,通过写下他们作为30.020.0

+0

例如'29/30 * 20'为0. OTOH,'29 * 20/30'为19. – MSalters

+0

请进一步详细说明先生,我只是一个开山人 –

+0

一个整数只关心数字的整个部分,所以那里即使你不关心小数点后的情况,也可以在分割时舍入错误。例如,如果你使用'int i = 1/2;','i'将等于0,而不是1,因为它只是下降了0.5。正如我在我的回答中提到的,使用double将解决此问题,但我建议您熟悉C++中的不同数值类型。 – IllusiveBrian

0

你应该使用双倍你的VAR ble“PG”,这样你就有足够的小数精度。

此外,您可能希望避免将来使用全局变量,因为我猜测这是您发生此错误的方式 - 在使用它之前,您从未将值指定为w,这意味着它将被赋值为0编译器,可能是什么在搞砸你的结果。

+0

'w'是一个全局的,因此是0初始化的;它的使用实际上是明确定义的,它对计算没有任何贡献。当然,这并不意味着我支持全局变量。 –

+0

我从来不知道这一点,它显示了我使用全局变量的程度。我会更新我的答案。如果她希望w具有有用价值,那么这仍然是她的问题。 – IllusiveBrian