Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นักเรียนสูงสุดที่จะผ่านหลังจากให้โบนัสแก่ทุกคนและไม่เกิน 100 คะแนนในโปรแกรม C++


ในปัญหานี้ เราได้รับอาร์เรย์ stu[] ขนาด n ซึ่งแสดงถึงเครื่องหมายของนักเรียนในชั้นเรียน สำหรับนักเรียนแต่ละคน คะแนนสูงสุดคือ 100 และนักเรียนต้องมีคะแนน 50 คะแนนจึงจะสอบผ่าน งานของเราคือสร้างโปรแกรมเพื่อค้นหาจำนวนนักเรียนสูงสุดที่จะผ่านหลังจากให้โบนัสกับทุกคนและไม่เกิน 100 คะแนน

คำอธิบายปัญหา − เราจำเป็นต้องให้คะแนนโบนัสแก่นักเรียนจึงจะผ่าน แต่คะแนนโบนัสจะมอบให้กับนักเรียนทุกคน งานของเราคือเพิ่มจำนวนนักเรียนที่สอบผ่านให้ได้มากที่สุดโดยให้คะแนนโบนัส แต่ไม่มีนักเรียนคนไหนควรได้คะแนนมากกว่า 100 หลังจากให้โบนัส แล้วส่งคืนจำนวนนักเรียนสูงสุดที่ผ่าน

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

stu[] = {45, 32, 78, 10, 53, 67}

ผลลัพธ์

5

คำอธิบาย

All students passed are :
45 + 22 = 67
32 + 22 = 54
78 + 22 = 100
53 + 22 = 75
67 + 22 = 89

แนวทางการแก้ปัญหา

ในการแก้ปัญหา เราต้องให้คะแนนนักเรียน แต่สิ่งหนึ่งที่ต้องคำนึงคือ คะแนนสูงสุดของนักเรียนทุกคนไม่ควรเกิน 100 ดังนั้นโบนัสสูงสุดที่จะได้รับคือ

Student with max marks(M) + bonus = 100
Bonus = 100 − M

จากนั้นเราจะเพิ่มโบนัสนี้ให้กับคะแนนปัจจุบันของนักเรียน หากเกิน 50 นักเรียนผ่าน ผลลัพธ์จะเป็นการนับจำนวนนักเรียนดังกล่าวทั้งหมด

อัลกอริทึม

เริ่มต้น

passCount = 0;

ขั้นตอนที่ 1

Find the student with maximum marks, maxMarks.

ขั้นตอนที่ 2

Calculate bonus that can be given to all students, bonus = 100 − maxMarks.

ขั้นตอนที่ 3

Loop for i −> 0 to n−1

ขั้นตอนที่ 3.1

if(stu[i] + bonus >= 50), passCount++.

ขั้นตอนที่ 4

return passCount.

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#include<iostream>
using namespace std;
int calcPassCount(int stu[], int n) {
   int maxMarks = stu[0];
   for(int i = 1; i < n; i++){
      if(stu[i] > maxMarks)
      maxMarks = stu[i];
   }
   int bonusMarks = 100 − maxMarks;
   int passCount = 0;
   for(int i=0; i<n; i++) {
      if(stu[i] + bonusMarks >= 50)
      passCount ++;
   }
   return passCount;
}
int main() {
   int stu[] = {45, 32, 78, 10, 53, 67};
   int n = sizeof(stu)/sizeof(stu[0]);
   cout<<"The Maximum students to pass after giving bonus to everybody is "<<calcPassCount(stu, n);
   return 0;
}

ผลลัพธ์

The Maximum students to pass after giving bonus to everybody is 5