※ ChatGPTを利用し、要約された質問です(原文:どこを変えればいいですか?)
上位 m 人の出力
このQ&Aのポイント
学籍番号と試験の点数のペアーを入力し,点数が高い順に上位 7 人の学籍番号と試験の点数を出力するプログラムの作成方法
データの入力と上位 5 人の出力を行うプログラムを実装し,学籍番号と試験の点数を1行に出力する
学籍番号と試験の点数のデータを最大100個まで入力し、点数の高い順に出力するプログラムを作成する
上位 m 人の出力
[問題]学籍番号と試験の点数のペアーを入力するものとする(「 0 0 」を入力すると終了し,データ数は 100 以下である).なお,データは,学籍番号順に入力されるわけではない.このとき,試験の点数の上位 7 人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け.ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする.結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ.
#include <iostream>
int main()
{
int i1, k, n = 0, m = 0, no[100], ten[100], sw[100] = {0}, k1, k2;
// データの入力
std::cin >> k1 >> k2;
while (k1 > 0 || k2 > 0) {
no[n] = k1;
ten[n] = k2;
n++;
std::cin >> k1 >> k2;
}
// 上位 5 人の出力
while (m < 5) {
k = -1;
for (i1 = 0; i1 < n; i1++) {
if (sw[i1] == 0 && (k < 0 || ten[i1] > ten[k]))
k = i1;
}
std::cout << no[k] << " " << ten[k] << std::endl;
sw[k] = 1;
m++;
}
return 0;
}