C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

全員にボーナスを与え、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

ソリューションアプローチ

この問題を解決するには、生徒に点数を付ける必要がありますが、考慮すべきことの1つは、生徒の最大点数が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

  1. C++で株式を売買した後の最大利益

    この問題では、i日目の特定の株式の価格を示す配列stkprice[]が与えられます。私たちの仕事は、C++で株式を売買した後の最大利益を計算するプログラムを作成することです。 問題の説明 −ここでは、利益を得るためにいつ売買できるかを確認する必要があります。利益を得るには、株を安く買い、値上がりしたら売る必要があります。そして、ドロップが再び発生したときに同じことを繰り返します。 問題を理解するために例を見てみましょう 入力 stkprice[] = {120, 310, 405, 210, 150, 550} 出力 685 説明 1日目に購入して3日目に販売すると、285の利益が得ら

  2. C++でのパズルの前後

    フレーズのリストがあるとし、パズルの前後のリストを生成します。ここでのフレーズは、小文字とスペースのみで構成される文字列です。開始位置と終了位置にスペースはありません。フレーズに連続したスペースはありません。 前後のパズルは、最初のフレーズの最後の単語が2番目のフレーズの最初の単語と同じである2つのフレーズをマージすることによって形成されるフレーズです。 2つのフレーズphrases[i]とphrases[j]ごとに形成できるBeforeとAfterのパズルを見つける必要があります。ここでI!=jです。 2つのフレーズを一致させる順序が重要であることに注意してください。両方の順序を考慮します