まとめ:基本的なスコアトラッカー
CoddyのRustジャーニー「論理とフロー」セクションの一部。レッスン 14/66。
チャレンジ
簡単2つの入力を受け取ります。1つ目はカンマ区切りのテストスコアのリスト、2つ目は追加するスコアです。初期スコアからベクターを作成し、新しいスコアを追加して、すべてのスコアの平均を計算し、結果を出力してください。
要件:
- カンマ区切りのスコアを含む1つ目の入力を読み取る(例:
85,92,78) - 文字列をカンマで分割し、整数に変換する前に各トークンを個別にトリミングする(例: 分割後の各要素に対して
.trim()を使用する) - これらのスコアから可変ベクターを作成する
- 2つ目の入力を読み取り、整数に変換する(最初にトリミングする)
.push()を使用して新しいスコアをベクターに追加する- ベクター内のすべてのスコアの平均を計算する
- スコアの合計数を出力する
- 平均スコアを(整数として)出力する
入力:
- 1行目: 初期スコアを表すカンマ区切りの整数(例:
85,92,78) - 2行目: 追加する新しいスコアを表す整数
出力:
- 1行目: スコアの合計数
- 2行目: 平均スコア(整数として切り捨て)
注: 入力行全体に対して、かつカンマで分割した後の各スコアトークンに対して、必ず.trim()を呼び出してください。入力文字列には、削除しないと解析時にパニックを引き起こす、目に見えない空白や改行文字が含まれている場合があります。
自分で試してみよう
use std::io;
fn main() {
// カンマ区切りのスコアを読み取る
let mut scores_input = String::new();
io::stdin().read_line(&mut scores_input).expect("Failed to read line");
// 追加する新しいスコアを読み取る
let mut new_score_input = String::new();
io::stdin().read_line(&mut new_score_input).expect("Failed to read line");
// TODO: 以下にコードを書いてください
// 1. scores_input をカンマで分割して整数に変換する
// 2. これらのスコアから可変ベクタを作成する
// 3. new_score_input を整数に変換する
// 4. 新しいスコアをベクタにプッシュする
// 5. すべてのスコアの平均を計算する
// スコアの総数を出力する
// println!("{}", total_scores);
// 平均スコアを出力する
// println!("{}", average);
}論理とフローのすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ