C++程式用於檢查有多少學生的得分高於第一個學生


假設我們有n個學生在五門科目上的分數。第一個分數是Kamal的,還有n-1個其他學生的得分,每個學生有五門科目的得分。我們需要統計得分高於Kamal的學生人數。在這裡,我們將定義一個名為students的類來載入每個學生的分數。該類有一個Input()函式用於輸入,還有一個calculateTotalScore()函式用於根據給定的五門課的成績計算學生的總分。

因此,如果輸入類似於n = 4 scores = [[25,45,32,42,30],[22,25,41,18,21],[37,42,48,45,25],[36,48,35,40,30]],則輸出將為2,因為最後兩個學生的總分高於Kamal。

為了解決這個問題,我們將遵循以下步驟:

  • s := 一個包含n個Student型別物件的陣列

  • for 初始化 i := 0,當 i < n,更新(i增加1),執行

    • 將scores[i]的所有分數載入到s[i]中

  • kamal_sc := s[0]的總分

  • count := 0

  • for 初始化 i := 1,當 i < n,更新(i增加1),執行

    • total := s[i]的總分

    • 如果 total > kamal_sc,則

      • (count增加1)

  • 返回 count

示例

讓我們看下面的實現來更好地理解:

#include <iostream>
#include <vector>
using namespace std;
class Student{
   public:
    int score[5];
    void input(vector<int> v){
        for(int i = 0; i < 5; i++)
            score[i] = v[i];
    }
    int calculateTotalScore(){
        int res = 0;
        for(int i = 0; i < 5; i++)
            res += score[i];
        return res;
    }
};
int main(){
    int n = 4;
    vector<vector<int>> scores = {{25,45,32,42,30},{22,25,41,18,21},{37,42,48,45,25},{36,48,35,40,30}};
    Student *s = new Student[n];
    for(int i = 0; i < n; i++){
        s[i].input(scores[i]);
    }
    int kamal_sc = s[0].calculateTotalScore();
    int count = 0;
    for(int i = 1; i < n; i++){
        int total = s[i].calculateTotalScore();
        if(total > kamal_sc){
            count++;
        }
    }
    cout << count;
}

輸入

4, {{25,45,32,42,30}, {22,25,41,18,21}, {37,42,48,45,25}, {36,48,35,40,30}}

輸出

2

更新於: 2021年10月7日

698 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告