Menu
Coddy logo textTech

İç İçe Döngüler

Coddy'nin Rust Journey'sinin Fundamentals bölümünün bir parçası — ders 41 / 75.

İç içe geçmiş bir döngü (nested loop), basitçe başka bir döngünün içindeki bir döngüdür. İç döngü, dış döngünün her bir iterasyonu için tüm iterasyonlarını tamamlayacaktır. Bunun için iyi bir benzetme saattir: her bir saat (dış döngü) için, yelkovan (iç döngü) 60 dakikalık tam döngüsünü tamamlamalıdır.

İç içe döngü örneği:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// Bu şunları çıktı olarak verecektir:
// 0 0
// 0 1
// 1 0
// 1 1

Dış döngü (x) iki kez çalışır ve bu seferlerin her birinde iç döngü (y) iki kez çalışır.

challenge icon

Görev

Başlangıç

1 ile n - 1 arasındaki sayıları kullanarak, toplamları n eden tüm sayı üçlülerini bulan bir program yazın. Program, ilk sayının ikinci sayıya eşit veya ondan küçük olduğu ve ikinci sayının üçüncü sayıya eşit veya ondan küçük olduğu (yani azalan olmayan sırada) tüm olası kombinasyonları göstermelidir. Bu, aynı sayı kümesini temsil eden "1 2 7" ve "2 1 7" gibi yinelenen üçlülerin oluşmamasını sağlar.

Örneğin, eğer n = 10 ise, çıktı şu şekilde olmalıdır:

1 1 8
1 2 7
1 3 6
1 4 5
2 2 6
2 3 5
2 4 4
3 3 4

Çünkü:

1 + 1 + 8 = 10
1 + 2 + 7 = 10
1 + 3 + 6 = 10
1 + 4 + 5 = 10
2 + 2 + 6 = 10
2 + 3 + 5 = 10
2 + 4 + 4 = 10
3 + 3 + 4 = 10

Yazdırma sırası: Üçlüler artan sırada yazdırılmalıdır. İlk sayı en küçükten en büyüğe doğru ilerlemeli ve her ilk sayı için ikinci sayı, a ≤ b ≤ c kuralını sağlayacak şekilde ilk sayıdan başlayarak maksimum geçerli değere kadar ilerlemelidir.

Kopya kağıdı

İç içe döngü, başka bir döngünün içindeki bir döngüdür. İçteki döngü, dıştaki döngünün her bir iterasyonu için tüm iterasyonlarını tamamlar.

Temel iç içe döngü yapısı:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// Çıktı:
// 0 0
// 0 1
// 1 0
// 1 1

Dıştaki döngü tamamen çalışır ve dıştaki döngünün her bir iterasyonu için içteki döngü kendi tam döngüsünü gerçekleştirir.

Kendin dene

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let n: i32 = input.trim().parse().unwrap();
    // Kodunuzu aşağıya yazın

}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fundamentals bölümündeki tüm dersler