ネストしたループ
CoddyのRustジャーニー「基礎」セクションの一部。レッスン 41/75。
ネストされたループとは、別のループの中にあるループのことです。外側のループが1回反復するごとに、内側のループはすべての反復を完了します。これを時計に例えるとわかりやすいでしょう。1時間(外側のループ)ごとに、分針(内側のループ)は60分のサイクルを最後まで完了します。
ネストされたループの例:
let rows = 2;
let cols = 2;
for x in 0..rows {
for y in 0..cols {
println!("{} {}", x, y);
}
}
// これを実行すると、次のように出力されます:
// 0 0
// 0 1
// 1 0
// 1 1外側のループ(x)はrows回実行され、その各回で内側のループ(y)はcols回実行されます。それぞれのループには独自のカウンターがあります。外側のループが実行されるたびに、yは0から再び始まります。一方、rowsとcolsは変わらず、ループをいつ終了するかを示すだけです。
チャレンジ
初心者指定された幅と高さのアスタリスク(*)でできた長方形を出力するプログラムを書きましょう。
入力:2つの整数:width と height(スターターコードですでに読み込まれています)。
例:
width = 5、height = 3 の場合、出力は次のようになります:
*****
*****
*****width = 4、height = 6 の場合、出力は次のようになります:
****
****
****
****
****
****ループごとに新しいカウンターを使い(たとえば、行には i、1行内のアスタリスクには j)、それを height または width と比較してください。height と width 自体は変更しないでください。各行で再び width が必要になります。
自分で試してみよう
use std::io;
fn main() {
let mut width_input = String::new();
let mut height_input = String::new();
io::stdin().read_line(&mut width_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
let width: i32 = width_input.trim().parse().unwrap();
let height: i32 = height_input.trim().parse().unwrap();
// 以下にコードを書いてください
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ