Menu
CoddyTech

ネストしたループ

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は変わらず、ループをいつ終了するかを示すだけです。

challenge icon

チャレンジ

初心者

指定された幅と高さのアスタリスク(*)の長方形を出力するプログラムを書きましょう。

入力: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();
    // 以下にコードを書いてください

}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ