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.
// 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
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.
// 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
* * *
* * *
* * *
* * *
* * *
Ushbu dasturda tashqi sikl 1 dan qatorlarga takrorlanadi.
Ichki sikl 1 dan ustunlarga takrorlanadi. Ichki sikl ichida biz '*' belgisini chop etamiz.
Ichki sikl ichida break operatori dan foydalansak, u ichki siklni tugatadi, lekin tashqi siklni emas. Masalan,
#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
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,
#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
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.