2016-08-24 64 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