Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
brr777
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 3
#1

Вложенные циклы - C++

30.07.2013, 16:04. Просмотров 528. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
for (int i = 1; i < 10; ++i)
    {
        for (int j = 1; j <= i; ++j)
            cout << "*";
            cout << "\n";
    }
Имеется такой вложенный цикл, при отладке смотрел за состоянием переменных, не могу понять почему переменная "j" не сохраняет старого значения а начинает крутить опять с единицы вновь, например при пятом заходе ее значение 5, после проверки условия становится 1, возможно я немного непонятно объяснил, но все же попробуйте объяснить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 16:04     Вложенные циклы
Посмотрите здесь:

C++ Вложенные циклы - C++
Всем привет,у меня такое задание :Посчитать и показать все варианты, которыми можно выдать на руки 200 гривен, доступные номиналы купюр 5,...

Вложенные циклы - C++
Не совсем понимаю работу вложенных циклов. Объясните пожалуйста следующее. Инструкция myArr=myArr; myArr=min; относится инструкцией...

Вложенные циклы - C++
я новичок и плохо пока в этом шарю, поэтому прошу помощи. Нужно решить вот это задание на Borland C ++ с использованием вложенных циклов ...

Вложенные циклы - C++
Всем привет! Суть проблемы в следующем: вычисляется функция R, где внешний цикл по l, внутренний по w. Затем вычисляем функцию...

Вложенные циклы - C++
Написать программу которая выводит рисунок * ** * * **** с помощью вложенных циклов

Вложенные циклы - C++
Помогите решить с помощью вложенных циклов. Ввести число строк! вывести похожее на следующее = заданому количеству строк ....* ...** ...

Вложенные циклы - C++
Всем привет. Изучаю С++ совсем недавно - по книге. Собсно вопрос. В главе о циклах в книге приведен пример - использование вложенного...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,459
Завершенные тесты: 1
30.07.2013, 16:23     Вложенные циклы #2
Потому что int j объявлена внутри цикла for. Ее область видимости это тело цикла. Как только цикл завершается, условие выхода из него выполняется, переменная j перестает существовать. На следующей внешней итерации i в цикле по j сама переменная j заново объявляется. Если хотите, чтобы j сохраняла свое состояние после выхода из цикла, объявите ее раньше - вне цикла:
C++
1
2
3
4
5
6
7
for (int i = 1; i < 10; ++i)
    {
        int j;
        for (j = 1; j <= i; ++j)
            cout << "*";
        cout << "\n";
    }
es_
202 / 202 / 46
Регистрация: 14.01.2013
Сообщений: 455
30.07.2013, 16:29     Вложенные циклы #3
Вот смотри:
C++
1
for (int i = 1; i < 10; ++i)
У тебя i меняется от 1 до 9 (включительно) в - данном коде у тебя это новые строки.
Вот первая итерация: i=1 - далее заходим во вложенный цикл:
C++
1
2
for (int j = 1; j <= i; ++j)
     cout << "*";
В нём j меняется от 1 до i - при первой итерации от 1 до 1. Т.е. нарисует одну "*", так как итерация одна, то на этом работа во вложенном цикле закончена и далее передаётся выполнению внешнего цикла, а именно выполнится действие
C++
1
cout << "\n";
Т.е. переход на новую строку, далее i увеличивается на единицу, становится 2 - заходим во вложенный цикл и изменяем j от 1 до 2(включительно) Т.е. рисуем два раза "*" и так далее ... до i=9 включительно.
Попытался подробно объяснить, думаю пригодится. А на конкретный вопрос ответил SatanaXIII.
brr777
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 3
30.07.2013, 16:39  [ТС]     Вложенные циклы #4
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Потому что int j объявлена внутри цикла for. Ее область видимости это тело цикла. Как только цикл завершается, условие выхода из него выполняется, переменная j перестает существовать. На следующей внешней итерации i в цикле по j сама переменная j заново объявляется. Если хотите, чтобы j сохраняла свое состояние после выхода из цикла, объявите ее раньше - вне цикла:
C++
1
2
3
4
5
6
7
for (int i = 1; i < 10; ++i)
    {
        int j;
        for (j = 1; j <= i; ++j)
            cout << "*";
        cout << "\n";
    }
Благодарю за ответы, но тут наверное я некорректно вопрос задал отчасти

C++
1
2
3
4
5
6
7
8
    int i, j;
 
    for (i = 1; i < 10; ++i)
    {
        for (j = 1; j <= i; ++j)
            cout << "*";
            cout << "\n";
    }
Например объявил их раньше, почему переменная j на пятом шаге не сохраняет значение 5, а начинает крутить с единицы , а не с пятерки?
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.07.2013, 16:40     Вложенные циклы #5
Цитата Сообщение от brr777 Посмотреть сообщение
почему переменная j на пятом шаге не сохраняет значение 5
Потому что инициализируется заново: j = 1

Выбросите инициализацию, будет так как вам нужно:
C++
1
for (; j <= i; ++j)
brr777
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 3
30.07.2013, 16:44  [ТС]     Вложенные циклы #6
Понятно, спасибо
es_
202 / 202 / 46
Регистрация: 14.01.2013
Сообщений: 455
30.07.2013, 16:44     Вложенные циклы #7
C++
1
j = 1
вот поэтому.
сделай так:
C++
1
2
3
4
5
6
7
int j=1;
for (int i = 1; i < 10; ++i)
{
   for (j; j <= i; ++j)
    cout << "*";
   cout << "\n";
}
и у тебя j будет крутится с предыдущего значения
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,459
Завершенные тесты: 1
30.07.2013, 16:47     Вложенные циклы #8
Цитата Сообщение от Schizorb Посмотреть сообщение
C++
1
for (; j <= i; ++j)
В данном случае весь этот цикл поместится в
C++
1
j=i;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 16:51     Вложенные циклы
Еще ссылки по теме:

Вложенные циклы - C++
&quot;Рисование&quot;символами.Символы должны отделяться пробелами.Надо вывести на экран. ____*____ ___***___ __*****__ _*******_ ...

Вложенные циклы - C++
Подскажите, пожалуйста, как решить данное задание?

Вложенные циклы - C++
Найти все натуральные числа в диапазоне между m и n (m&lt;n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. ...

Вложенные циклы С++ - C++
вывести на экран числа в виде таблицы 6 6 6 6 6 7 7 7 7 8 8 8 9 9 10

Вложенные циклы - C++
Объясните новичку, в чем разница? Дело в том, что если записывать вложенный цикл в фигурные скобки: for(int d=0; d&lt;y; d++){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Schizorb
30.07.2013, 16:51     Вложенные циклы
  #9

Не по теме:

SatanaXIII, точно )

Yandex
Объявления
30.07.2013, 16:51     Вложенные циклы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru