Giả sử chúng ta có n học sinh đạt điểm trên năm môn học. Điểm đầu tiên dành cho Kamal, và có thêm n-1 điểm cho các học sinh khác và mỗi học sinh có năm môn học. Chúng ta sẽ phải đếm số học sinh đạt nhiều điểm hơn Kamal. Ở đây chúng ta sẽ xác định một lớp được gọi là học sinh để tải điểm cho mỗi học sinh. Lớp có một hàm Input () để lấy dữ liệu đầu vào và hàm CalculTotalScore () để tính điểm của một học sinh từ năm điểm cho trước.
Vì vậy, nếu đầu vào là n =4 điểm =[[25,45,32,42,30], [22,25,41,18,21], [37,42,48,45,25], [ 36,48,35,40,30]], thì đầu ra sẽ là 2 vì hai học sinh cuối cùng có điểm cao hơn Kamal.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
s:=một mảng đối tượng kiểu Sinh viên có n phần tử
-
để khởi tạo i:=0, khi i
-
tải tất cả các điểm số [i] vào s [i]
-
-
kamal_sc:=tổng điểm của s [0]
-
đếm:=0
-
để khởi tạo i:=1, khi i
-
tổng:=tổng điểm của s [i]
-
nếu tổng số> kamal_sc, thì:
-
(tăng số lượng lên 1)
-
-
-
số lần trả lại
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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; }
Đầu vào
4, {{25,45,32,42,30}, {22,25,41,18,21}, {37,42,48,45,25}, {36,48,35,40,30}}
Đầu ra
2