復習 - 成績の集計
CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 66/66。
チャレンジ
簡単学生の成績を表す複数の入力を受け取ります。最初の入力は、その後に続く成績の数を示す数値です。次に、その数だけ成績の値を受け取ります(1行に1つ)。これらの成績を処理し、包括的な要約を提供してください。
要件:
- 最初の入力(成績の数)を読み取り、空白をトリミングして、
i32にパースします - 成績を格納するための空のベクタを作成します
- ループを使用して各成績を読み取り、空白をトリミングして、
i32にパースし、ベクタに追加します - 平均点(すべての成績の合計を個数で割ったもの)を計算します
- ベクタ内の最高点を見つけます
- ベクタ内の最低点を見つけます
- 合格点(70点以上)の数をカウントします
- 不合格点(70点未満)の数をカウントします
- 以下に示す正確な形式で結果を出力します
出力形式:
- 1行目:
Average: X(X は整数としての平均値) - 2行目:
Highest: X(X は最高点) - 3行目:
Lowest: X(X は最低点) - 4行目:
Passing: X(X は合格した成績の数) - 5行目:
Failing: X(X は不合格だった成績の数)
入力:
- 1行目: 成績の数 (例:
5) - 続く行: 個々の成績の値 (例:
85,92,67,78,95)
出力:
- 平均、最高点、最低点、合格数、不合格数を示す5行
自分で試してみよう
use std::io;
fn main() {
// 成績の数を読み込む
let mut count_input = String::new();
io::stdin().read_line(&mut count_input).expect("Failed to read line");
let count: i32 = count_input.trim().parse().expect("Invalid number");
// 成績を格納するためのベクタを作成する
let mut grades: Vec<i32> = Vec::new();
// 各成績を読み込む
for _ in 0..count {
let mut grade_input = String::new();
io::stdin().read_line(&mut grade_input).expect("Failed to read line");
let grade: i32 = grade_input.trim().parse().expect("Invalid number");
grades.push(grade);
}
// TODO: 以下にコードを記述してください
// 平均の計算、最高点と最低点の特定、合格・不合格者数のカウント
// 必要な形式で結果を出力する
// println!("Average: {}", average);
// println!("Highest: {}", highest);
// println!("Lowest: {}", lowest);
// println!("Passing: {}", passing_count);
// println!("Failing: {}", failing_count);
}