Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

첫 번째 학생보다 더 높은 점수를 받은 학생이 몇 명인지 확인하는 C++ 프로그램

<시간/>

n명의 학생이 5개 과목에서 점수를 받았다고 가정합니다. 첫 번째 점수는 Kamal을 위한 것이고 다른 학생들을 위한 n-1개의 추가 점수가 있으며 각 학생은 5개의 과목을 가지고 있습니다. Kamal보다 더 많은 점수를 받은 학생의 수를 계산해야 합니다. 여기에서 학생이라는 클래스를 정의하여 각 학생의 점수를 로드합니다. 이 클래스에는 입력을 받는 하나의 Input() 함수와 주어진 5개 점수에서 학생의 점수를 계산하는 computeTotalScore() 함수가 있습니다.

따라서 입력이 다음과 같으면 n =4 점수 =[[25,45,32,42,30],[22,25,41,18,21],[37,42,48,45,25],[ 36,48,35,40,30]], 마지막 두 학생의 점수가 Kamal보다 높기 때문에 출력은 2가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • s :=n개의 요소가 있는 학생 유형 객체의 배열

  • initialize i :=0의 경우 i

    • 모든 점수[i]를 s[i]에 로드

  • kamal_sc :=s[0]의 총점

  • 개수 :=0

  • initialize i :=1의 경우 i

    • total :=s[i]의 총점

    • total> kamal_sc인 경우:

      • (1씩 증가)

  • 반환 횟수

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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