Computer >> Máy Tính >  >> Lập trình >> C ++

Số sinh viên tối đa vượt qua sau khi trao tiền thưởng cho mọi người và không vượt quá 100 điểm trong Chương trình C ++

Trong bài toán này, chúng ta được cung cấp một mảng stu [] có kích thước n biểu thị các điểm của học sinh trong lớp. Đối với mỗi học sinh, điểm tối đa là 100 và học sinh cần 50 điểm để vượt qua kỳ thi. Nhiệm vụ của chúng tôi là tạo ra một chương trình để tìm ra những học sinh đạt Điểm tối đa sau khi trao phần thưởng cho mọi người và không vượt quá 100 điểm.

Mô tả sự cố - Chúng ta cần chấm điểm thưởng cho những học sinh vượt qua nhưng điểm thưởng sẽ được trao cho tất cả học sinh. Nhiệm vụ của chúng tôi là tối đa hóa số học sinh có thể vượt qua kỳ thi bằng cách cho điểm thưởng nhưng không học sinh nào được điểm hơn 100 sau khi thưởng. Và sau đó trả về số học sinh đậu tối đa.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

5

Giải thích

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

Phương pháp tiếp cận giải pháp

Để giải quyết vấn đề, chúng ta cần cho điểm học sinh nhưng cần lưu ý một điều là điểm tối đa của bất kỳ học sinh nào không được vượt quá 100. Vì vậy, phần thưởng tối đa có thể được trao là

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

Sau đó, chúng tôi sẽ cộng phần thưởng này vào điểm hiện tại của học sinh. Nếu vượt quá 50, học sinh đậu. Kết quả sẽ là tổng số học sinh như vậy.

Thuật toán

Khởi tạo

passCount = 0;

Bước 1 -

Find the student with maximum marks, maxMarks.

Bước 2 -

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

Bước 3 -

Loop for i −> 0 to n−1

Bước 3.1 -

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

Bước 4 -

return passCount.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

#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;
}

Đầu ra

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