在给每个人加分且不超过C ++程序中的100分后通过的最大学生人数

在这个问题中,我们得到一个大小为n的数组stu [],表示班上学生的成绩。每位学生的最高分数是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<<"给每个人奖金后通过的最大学生数是 "<<calcPassCount(stu, n);
   return 0;
}

输出结果

给每个人奖金后通过的最大学生数是 5
猜你喜欢