Основи програмування на С ++ для початківців

Вложенные циклы в C

вложенные циклы C++Ми з вами встигли познайомитися з трьома конструкціями повторення в мові програмування C ++. це циклиfor, while и do while. Если вы обратили внимание, вкладення конструкцій логічного вибору if і else в цикли вже застосовувалося. Сейчас же мы рассмотрим вложенные циклы – это когда в теле одного цикла (внешнего) размещается другой цикл (внутренний). Таких вложенных циклов во внешнем цикле может быть несколько.

По своей структуре, вложенные циклы напоминают мне коробки разных размеров, как на нашем рисунке. Ці коробки легко можна скласти один в одного і помістити в одну велику коробку. Так и с циклами. Программе, чтобы добраться к вложенному циклу, необходимо сначала приступить к выполнению внешнего цикла (открыть крышку большой коробки), выполнить, то що прописано в коді до вкладеного циклу і потім вже приступити до виконання цього циклу.

Есть один интересный распространённый пример, для демонстрации работы вложенных циклов. Рассмотрим его: применяя циклы, необхідно намалювати прямокутник розміром 5 х 15 из символов @.

Сначала начинает выполняться цикл for в строке 6. Так як в його тілі нічого не прописано до другого циклу, программа сразу приступает к выполнению этого вложенного цикла – строки 8 – 11. В результате его выполнения, на экране в одной строке отображаются 15 символов @ и происходит выход из него. Тут сработает cout  в строке 12, управляющая переменная i увеличится на единицу и продолжится выполнение главного и вложенного циклов. То есть снова 15 символов на экране и переход на строку ниже. Так будет сделано 5 раз, после чего программа завершит работу. На экране видим то, что было в условии:

вложенные циклы в C

Можно эту задачу немного усложнить. Теперь пусть символ для печати фигуры выбирает пользователь, посредством ввода с клавиатуры. Он же выберет размер – ширину и высоту. Еще одно новшество – фигура должна быть пустой, а не заполненной, как в нашем предыдущем примере. То есть она должна состоять только из контура. Вот наше решение:

Результат зависит от введенных данных, которые задаст пользователь. У меня получился черный квадрат из вопросов :)

вложенные циклы в C++

Еще один пример: печать таблицы умножения.

В результате увидим таблицу умножения:

вложенные циклы в C++

вложенные циклы в C++

.

.

.

.

.

.

.

.

.

На рисунках показаны только начало и конец таблицы.

Надеюсь урок был для вас полезен. Вложенные конструкции в программировании на C встречаются достаточно часто. Обязательно рассмотрите задачи, которые мы приготовили. Если у вас остались какие-то вопросы по теме – ждем их в комментариях.

40 думки про "Вложенные циклы в C

    1. Мені приємно бачити щось на зразок похвали від тебе )

      З приводу cin з відступами в коді, мені хотілося трохи виділити пропозицію ввести дані і сам введення даних, щоб не було написано все суцільним блоком в 6 строк. Про те, що треба саме так, звичайно ніде не написано )

  1. Вітаю!
    читаю книжку “С ++ для чайників” І якось невиразно в ній розписана тема про вкладені цикли. Пошукав в Інеті і потрапив на Ваш сайт. Приклади дуже зрозумілі і доступні для початківця. Навіть порівняв з п'ятьма іншими сайтами, Ви найкращі!
    величезне ПАСИБА! Начебто складна тема, а завдяки Вашій статті все як двічі два. повага!
    Чи не смог не подякувати за таку працю…

    1. Спасибо! Мені дуже приємно читати такі коментарі до моїх уроків! Це надихає не менше, ніж критика :)

  2. Здравствуйте.Я спробував вирішити задачку (другу)
    #include
    using namespace std;
    int strok,символ;
    int main()
    {
    cout<<"Kol-vo strok/i="strok;
    cout<<"Kol-vo simbol/j"simbol;
    for(int i=1;i<= інсульт;i )
    {
    for(INT = 1;j<= символ;j )
    {
    if ((i!== 1 && (strok-i!== 1))&&( J == 1 || J == 2 )&&(J == символ|| J ==(Символ-1)))
    {
    cout<<"*";
    }

    if (я == 1||Хід-1!== 1)
    {
    cout<<"*";
    }

    }
    cout <KOD.cpp
    1>c:\Користувачі тимур Desktop документи Visual Studio 2008 рік Projects vl_chirlu vl_chirlu kod.cpp(14) : C2059 помилка: синтаксична помилка: =
    1>c:\Користувачі тимур Desktop документи Visual Studio 2008 рік Projects vl_chirlu vl_chirlu kod.cpp(15) : C2143 помилка: синтаксична помилка: відсутність “;” перед “{”
    1>c:\Користувачі тимур Desktop документи Visual Studio 2008 рік Projects vl_chirlu vl_chirlu kod.cpp(19) : C2059 помилка: синтаксична помилка: =
    1>c:\Користувачі тимур Desktop документи Visual Studio 2008 рік Projects vl_chirlu vl_chirlu kod.cpp(20) : C2143 помилка: синтаксична помилка: відсутність “;” перед “{”
    ПОДСКАЖИТЕ У ЧОМУ ПОМИЛКА?????

  3. чудовий урок!! Спасибо.
    Але, допоможіть розібратися із завданням 2, де малюється прямокутник.
    Чи не зрозуміла рядок
    for (int j = 1; j <= symbInLines – 2; j )
    пояснити, будь ласка, детальней.

    1. symbInLines це змінна, яка вказує яка ширина квадрата.
      Наприклад symbInLines = 50. Опис J = 1; j <= SymbInLines - 2 каже що цикл повинен виконатися 48 раз вивівши 48 прогалин між двома символами окантовки квадрата.

  4. Може кому буде цікаво на While

    #include
    using namespace std;
    int main()
    {
    int a=1,b=0,c=1,d=0;
    cout<<b;
    cout<<d;
    while(a<=b)
    {
    c=1;
    while(c<=d)
    {
    if (a==1||a==b)
    {
    cout<<"0";
    }
    else if (c==1||c==d)
    {
    cout<<"0";
    }
    else
    {
    cout<<"1";
    }
    c++;
    }
    a++;
    cout<<endl;
    }

    return 0;
    }

  5. Доброго дня!
    Уроки замечательние.всё дуже зрозуміло распісано.Спасібо Вам величезне.


  6. for (int i = 0; i < height; i++)
    {
    for (int j = 0; j < width; j++)
    {
    if ((i == 0 || i == height - 1) || (j == 0 && i != 0 && i != height - 1) || (j == width - 1 && i != 0 && i != height - 1 ))
    {
    cout << symbol;
    }
    else
    {
    cout << ' ';
    }
    }
    cout << endl;
    }

    хороші уроки)

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *