2016-08-24 93 views
-5

我的程序设计讲师教我们如何编写函数,非常可能会加上,我们是制作一个计算学生作业等级的程序。这里是它的规格。C++函数分配等级计算器

  1. 得分1由0.3加权,
  2. 得分2由0.5加权,
  3. 得分3由0.2加权。 如果分数的总和大于或等于85,那么等级是'A'。 如果得分总和大于或等于75,那么等级是'B'。 如果分数的总和大于或等于65,那么等级是'C'。 如果得分总和大于或等于50,那么等级是'P'。 否则等级是'F'。

所以我写了我的代码如下:

#include <iostream> 

using namespace std; 

void calculateGrade() { 


int score1, score2, score3; 
int percentDec; 
    cin >>score1>>score2>>score3; 
    percentDec = (score1+score2+score3); 

    if (percentDec >= 85) { 
     cout << "The Course grade is: A"; 
    } 
    else if (percentDec >= 75) { 
     cout << "The Course grade is: B"; 
    } 
    else if (percentDec >= 65) { 
     cout <<"The Course grade is: C"; 
    } 
    else if (percentDec >= 50) { 
     cout <<"The Course grade is: P"; 
    } 
    else { 
     cout <<"The Course grade is: F"; 
    } 
} //end of calculateGrade() 

int main() { 
    calculateGrade(); 
    return 0; 

} 

这对我的IDE工作正常,但是当我把它变成它决定我们的答案是否正确这是行不通的方案,那就是因为通常我们被要求只把这些东西放在main()中,但是因为它是一个功能,并且它不在main()中,所以它不能这样工作。我们将这作为一个例子,我将要抛弃一些愚蠢的东西。我不知道如何编程才能按照他们想要的方式工作。

cout << "The Course grade is: " << calculateGrade(90, 50, 99) << endl; 

干杯的任何帮助。

+2

返回值...,所以不是在函数中输出答案,而是返回一个字符串并在main中打印出来。您还需要参数才能通过,因为这些整数没有任何价值(并且没有加权) – Li357

+0

您也忘了衡量分数。 – Rakete1111

+1

你的教练应该教你吗? – immibis

回答

1

这不是一个获得答案的论坛,尽管你已经尝试过很好的作品。以下是需要注意的地方:

1)指导员向您显示您可以将代码分解为函数。他/她希望你写一个函数calculateGrade,它可以像这样工作cout << "The Course grade is: " << calculateGrade(90, 50, 99) << endl;。现在,在C++中的每个函数的声明有三个部分,以它:

return_type functionName(param1_type param1, param2_type param2,...) { 
    // implementation 
} 

的functionName是什么功能是通过(calculateGrade在这种情况下)的简称,该参数是需要传递给函数它的信息做它的事情,返回类型是函数将返回的。在这种情况下,您的老师会说calculateGrade会以三个整数作为参数,并且必须返回一个表示学生成绩分数的字符串。因此,你的函数应该是这样的:

string calculateGrade(int score1, int score2, int score3) { 
    // ... 
} 

2)评论正确地指出,你是不是由calculateGrade()方法,它们各自的权重相乘score1,score2和score3。

从您的问题和意见中,我了解到您对功能的掌握并非完全可靠。而不是抱怨你的老师(不管他是否过错),我建议你阅读here。有大量的在线资源可以帮助您学习C++编程的基础知识。

0

你的导师要求你写一个接受3参数并返回等级的函数。

char calculateGrade(int score1, int score2, int score3) { 
    char grade = 'F'; 
    double percent = (0.3*score1 + 0.5*score2 + 0.2*score3); 
    if(...) { 
     grade = 'A/B/C/P'; // Depending upon condition, assign only value 
    } 
    else if(...) { 
     grade = 'A/B/C/P'; //Depending upon condition, assign only one value 
    } 
    // Add the condition in if else statements to get the actual grade. 

    return grade; 
} 

注意,percentdouble类型。你需要在双重基础上做所有的比较。

+0

发布作业问题的完整答案违反了社区准则。 – gowrath