Menu
Coddy logo textTech

復習 - 成績の集計

CoddyのRustジャーニー「Logic & Flow」セクションの一部 — レッスン 66/66。

challenge icon

チャレンジ

簡単

学生の成績を表す複数の入力を受け取ります。最初の入力は、その後に続く成績の数を示す数値です。次に、その数だけ成績の値を受け取ります(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);
}

Logic & Flowのすべてのレッスン