75 / 90

C++ Nested Loops

C++ ichma-ich sikllari

Boshqa sikl ichidagi sikl ichki sikl deyiladi. Misol olaylik,

Aytaylik, biz 3 hafta davomida haftaning har kunini aylanib o'tmoqchimiz.

Bunga erishish uchun biz uch marta (3 hafta) takrorlash uchun sikl yaratishimiz mumkin. Va sikl ichida biz 7 marta (7 kun) takrorlash uchun yana bir sikl yaratishimiz mumkin. Biz ichma-ich sikllar (nested loops)dan shunday foydalanishimiz mumkin.

Misol: Ichma-ich for sikllari (Nested for loops)

example.cpp
// 3 haftaning 7 kunini ko'rsatish uchun C++ dasturi

#include <iostream>
using namespace std;

int main() {
    int weeks = 3, days_in_week = 7;

    for (int i = 1; i <= weeks; ++i) {
        cout << "Week: " << i << endl;

        for (int j = 1; j <= days_in_week; ++j) {
            cout << "    Day:" << j << endl;
        }
    }

    return 0;
}

Chiqish

kod
Week: 1
    Day:1
    Day:2
    Day:3
    ... .. ...
Week: 2
    Day:1
    Day:2
    Day:3
    ... ... ..

Biz while and do...while bilan xuddi shunday tarzda ichma-ich sikllar (nested loops)ni yaratishimiz mumkin.

Misol: Shakl (pattern) chiqarish

example.cpp
// Shaklni (pattern) ekranga chiqarish uchun C++ dasturi
// 5 qator va 3 ustundan iborat

#include <iostream>
using namespace std;

int main() {

   int rows = 5;
   int columns = 3;

   for (int i = 1; i <= rows; ++i) {
      for (int j = 1; j <= columns; ++j) {
         cout << "*  ";
      }
      cout << endl;
   }

   return 0;
}

Chiqish

kod
*  *  *  
*  *  *  
*  *  *  
*  *  *  
*  *  *

Ushbu dasturda tashqi sikl 1 dan qatorlarga takrorlanadi.

Ichki sikl 1 dan ustunlarga takrorlanadi. Ichki sikl ichida biz '*' belgisini chop etamiz.

Ichma-ich sikllarda break va continue operatorlari

Ichki sikl ichida break operatori dan foydalansak, u ichki siklni tugatadi, lekin tashqi siklni emas. Masalan,

Misol: Inside Nested Loops ni buzish

example.cpp
#include <iostream>
using namespace std;

int main() {
    int weeks = 3, days_in_week = 7;

    for (int i = 1; i <= weeks; ++i) {
        cout << "Week: " << i << endl;

        for (int j = 1; j <= days_in_week; ++j) {
            // 2-haftada tanaffus
            if (i == 2) {
                break;
            }
            cout << "    Day:" << j << endl;
        }
    }
}

Chiqish

kod
Week: 1
    Day:1
    Day:2
    ... .. ...
Week: 2
Week: 3
    Day:1
    Day:2
    ... .. ...

Agar i qiymati 2 bo'lsa, bu dastur ichki siklni ishga tushirmaydi, ya'ni u 2-haftaning kunlarini chop etmaydi. Haftalarni chop etadigan tashqi sikl ta'sir qilmaydi.

Xuddi shunday, biz ichki sikl ichida continue operatori dan foydalansak, u faqat ichki siklning joriy iteratsiyasini o'tkazib yuboradi. Tashqi sikl ta'sir qilmaydi. Masalan,

Misol: Inside Nested Loops-ni davom ettiring

example.cpp
#include <iostream>
using namespace std;

int main() {
    int weeks = 3, days_in_week = 7;

    for (int i = 1; i <= weeks; ++i) {
        cout << "Week: " << i << endl;

        for (int j = 1; j <= days_in_week; ++j) {
            // agar kun toq son bo'lsa, o'tkazib yuborish (continue)
            if (j % 2 != 0) {
                continue;
            }
            cout << "    Day:" << j << endl;
        }
    }
}

Chiqish

kod
Week: 1
    Day:2
    Day:4
    Day:6
Week: 2
    Day:2
    Day:4
    Day:6
Week: 3
    Day:2
    Day:4
    Day:6

Bu dastur faqat teng bo'lgan kunlarni chop etadi.

Har doim haftaning_kunlari g'alati bo'lsa, continue operatori ichki siklning iteratsiyasini o'tkazib yuboradi.