สมมติว่ามีนักเรียน n คน แต่ละคนมีคะแนน 5 วิชา คนแรกคือ กมล ต้องนับจำนวนนักเรียนที่คะแนนรวมมากกว่ากมล สร้างคลาส Student มี 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 (คนที่ 3 และ 4 มากกว่ากมล)
ขั้นตอนการแก้ปัญหา
- สร้างอาเรย์ Student s[n]
- โหลดคะแนนทั้งหมดลง s[i]
- kamal_sc := s[0].calculateTotalScore()
- count := 0 วนลูป i=1 ถึง n-1 ถ้า s[i].calculateTotalScore() > kamal_sc count++
- คืนค่า 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