В този урок ще научим за вложени цикли в C ++. Ще се научим да използваме вложени за, while и do … while цикли в програма.
Цикъл в друг цикъл се нарича вложен цикъл. Нека вземем пример,
Да предположим, че искаме да повтаряме всеки ден от седмицата в продължение на 3 седмици.
За да постигнем това, можем да създадем вложен цикъл, който да се повтори три пъти (3 седмици). И вътре в цикъла можем да създадем друг цикъл, който да се повтори 7 пъти (7 дни). Например,
Пример: Вложен за Loop
// C++ program to display 7 days of 3 weeks #include 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; )
Изход
Седмица: 1 ден: 1 ден: 2 ден: 3… седмица: 2 ден: 1 ден: 2 ден: 3……
Можем да създаваме вложени цикли с while и да правим … докато сме по подобен начин.
Пример: Показване на шаблон
// C++ program to display a pattern // with 5 rows and 3 columns #include 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; )
Изход
* * * * * * * * * * * * * * *
В тази програма външният цикъл се повтаря от i == 1
до i == rows
.
Вътрешният цикъл се повтаря от j == 1
до j == columns
. Във вътрешния цикъл отпечатваме символа '*'
.
прекъснете и продължете Вътре вложени цикли
Когато използваме оператор break вътре във вътрешния цикъл, той прекратява вътрешния цикъл, но не и външния цикъл. Например,
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) ( // break during the 2nd week if (i == 2) ( break; ) cout << " Day:" << j << endl; ) )
Изход
Седмица: 1 ден: 1 ден: 2 … седмица: 2 седмица: 3 ден: 1 ден: 2 …
Тази програма не изпълнява вътрешния цикъл, когато стойността на i е, 2
т.е. не отпечатва дните на 2-рата седмица. Външният цикъл, който отпечатва седмиците, не е засегнат.
По същия начин, когато използваме оператор continue във вътрешния цикъл, той пропуска текущата итерация само на вътрешния цикъл. Външният контур не е засегнат. Например,
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) ( // continue if the day is an odd number if (j%2 != 0) ( continue; ) cout << " Day:" << j << endl; ) )
Изход
Седмица: 1 ден: 2 ден: 4 ден: 6 седмица: 2 ден: 2 ден: 4 ден: 6 седмица: 3 ден: 2 ден: 4 ден: 6
Тази програма отпечатва само онези дни, които са четни.
Винаги, когато days_in_week е странно, continue
изявлението прескача тази итерация на вътрешния цикъл.