Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенный цикл, for 
V
    Опции темы
Zverushka
Дата 24.8.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Здрасте, есть цикл который рисует звездочками перевернутый треугольник 

Код

for(int i=0; i<10; i++){
        
        for(int j=10; j>i; j--){
            cout<<"*";
        }
        cout<<endl;
    }


Пожалуйста объясните построчно каждую строку 

Заранее спасибо 

Это сообщение отредактировал(а) Zverushka - 24.8.2011, 15:13
PM MAIL   Вверх
bsa
Дата 24.8.2011, 15:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
цикл по i от 0 и пока меньше 10, после каждой итерации увеличивать на 1
   цикл по j от 10 и пока больше i, после каждой итерации уменьшать на 1
    вывести звездочку
   конеч цикла по j
   начать следующую строку
конец цикла по i

PM   Вверх
Zverushka
Дата 24.8.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



То есть что бы перекинуть все звездочки на другую сторону как на рисунке мне нужно воспользоваться

Код

if(j <= 8){
     cout<<" ";
}


просто вообще не пойму 

Это сообщение отредактировал(а) Zverushka - 24.8.2011, 15:38

Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  1.jpg 41,82 Kb
PM MAIL   Вверх
bsa
Дата 24.8.2011, 15:54 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Zverushka, нет. тебе необходимо перед звездочками в каждой строке нарисовать 10-i-1 пробелов, а только после этого i+1 звездочку
PM   Вверх
Zverushka
Дата 24.8.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Еще один вложенный цикл я сойду с ума

Вроде все просто но голова уже не варить, запутался 
PM MAIL   Вверх
spyswamp
Дата 24.8.2011, 16:50 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 1
Всего: 7



Zverushka, воспользуйся листком в клеточку (каждая клетка = 1 символ). Нарисуй варианты, которые хочешь увидеть в консоли. Иногда визуализация процесса намного упрощает понимание и, как следствие, код.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Чoо
Дата 24.8.2011, 16:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Zverushka, во вложенном цикле, в приведенном вами исходнике, происходит печать 10-i-1 звездочек. так что место для печати пробелов у вас уже найдено. Вам осталось найти место, в котором выводить i+1 звездочек. 
да.. нужен еще один вложенный цикл. вопрос где?

Добавлено @ 16:53
Цитата(spyswamp @ 24.8.2011,  16:50)
Zverushka, воспользуйся листком в клеточку (каждая клетка = 1 символ). Нарисуй варианты, которые хочешь увидеть в консоли. Иногда визуализация процесса намного упрощает понимание и, как следствие, код.

да.. верно.. а еще для простоты можно уменьшить количество итераций циклов до 2х

Это сообщение отредактировал(а) Чoо - 24.8.2011, 16:56


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Zverushka
Дата 24.8.2011, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Цитата(Чoо @ 24.8.2011,  16:50)
да.. нужен еще один вложенный цикл. вопрос где?

Я так думаю что во внутреннем цикле перед 

Код

cout<<"*";


только одно не понятно создавать еще одну переменную или можно воспользоваться уже существующими ? 

Спасибо за ответы. полезно 
PM MAIL   Вверх
Чoо
Дата 24.8.2011, 17:19 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Zverushka, вы имеете ввиду цикл должен быть вложен во вложенный цикл?


Цитата(Zverushka @  24.8.2011,  17:10 Найти цитируемый пост)
только одно не понятно создавать еще одну переменную или можно воспользоваться уже существующими ? 

если имя переменной выходит из области видимости, то можно это имя использовать еще раз. 

например:
Код

for(int i=0; i<10; ++i{
  int i;//переменная затенит переменную i.. тоесть значение i которая объявлена в цикле поулчить будет невозможно (может ошибаюсь)
}
int i; //допустимо


хотя, в неокторых случаях можно использовать значение переменной i, которая объявлена в конструкции цикла, а так же менять ее значение.. 


Это сообщение отредактировал(а) Чoо - 24.8.2011, 17:27


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Zverushka
Дата 24.8.2011, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Цитата(Чoо @ 24.8.2011,  17:19)
Zverushka, вы имеете ввиду цикл должен быть вложен во вложенный цикл?

Да. вроде логично сперва выводим пустое поле а потом звездочки 
PM MAIL   Вверх
Чoо
Дата 24.8.2011, 17:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Цитата(Zverushka @  24.8.2011,  17:48 Найти цитируемый пост)
Да.

нет

Добавлено через 5 минут и 39 секунд
хотя да.. можно  и так, но это будет выглядеть чуть сложнее

Добавлено через 8 минут
хотя все-таки нет smile

Добавлено через 9 минут и 14 секунд
вобщем внешний цикл попрежнему должен делать переход на новую строку.
если цикл будет вложен во вложенный, то у нас будет чередование пробелов и звездочек, что не нужно


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Zverushka
Дата 24.8.2011, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Я вроде двигаюсь в правильном направлении 

Код

        for(int i=0; i<1; i++){
                cout<<" ";
        }


Только теперь в этой строчке 

Код

 for(int i=0; i<1; i++){


нужно изменить 1 на переменную i. не уверен 

Ага есть рабочий код 

Код

        cout<<endl;
        for(int a=0; a<i; a++){
                cout<<" ";


И выводит он вот такой перевернутый прямоугольник 

**********
*********
 ********
  *******
   ******
    *****
     ****
      ***
       **
        *
но как выровнять первую строчку ?





Это сообщение отредактировал(а) Zverushka - 24.8.2011, 20:22

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  2.jpg 39,06 Kb
PM MAIL   Вверх
Чoо
Дата 24.8.2011, 21:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Zverushka, вам же такой вывод нужен?
Код

          *
         **
        ***
       ****
      *****
     ******
    *******
   ********
  *********
 **********

похоже вы запутались... 
как я говорил, код для пробелов у нас уже есть(достаточно всё оставить как есть, только там где звездочка сделать пробел).. Нужно добавить еще один цикл, который бы выводил еще и звездочки.. таким образом имеем:
Код

    for(int i=0; i<10; i++){
        for(int j=10; j>i; j--)
            cout<<" ";
        //в этом месте нужен цикл, который выводит i+1 звездочек
        cout<<endl;
     }



--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Zverushka
Дата 24.8.2011, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.5.2011

Репутация: нет
Всего: нет



Цитата(Чoо @ 24.8.2011,  21:11)
Zverushka, вам же такой вывод нужен?
Код

          *
         **
        ***
       ****
      *****
     ******
    *******
   ********
  *********
 **********


Да. и я его реализовал просто перевернув другой вариант 

Код

for(int j=0; j<i; j++){
            cout<<"*";
        }
        cout<<endl;
        for(int a=10; a>i; a--){
                cout<<" ";
        }
    }

PM MAIL   Вверх
mes
Дата 25.8.2011, 00:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Zverushka @  24.8.2011,  18:56 Найти цитируемый пост)

но как выровнять первую строчку ?


Цитата(Zverushka @  24.8.2011,  22:38 Найти цитируемый пост)
for(int j=0; j<i; j++){
            cout<<"*";
        }
        cout<<endl;
        for(int a=10; a>i; a--){

поменяместами циклы по выводу звездочек и пробелов.. 



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.