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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.65
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
#1

комманда break в двойном цикле - C++

15.07.2009, 21:31. Просмотров 5672. Ответов 28
Метки нет (Все метки)

как сделать так, чтобы при выполнении условия происходил выход из двойного цикла?
Я пробую

C++
1
2
3
4
5
6
7
8
9
10
11
for(int i=0; i<imageLabel.GetSize1(); ++i)
    {
         for(int j=0; j<imageLabel.GetSize2(); ++j)
            {
              if(imageLabel(i,j)!=0)
          {
          labelCell.push_back(imageLabel(i,j));
          break;
          }
           }
       }
Мне нужно, чтобы цикл заканчивался, как только я попадаю на первое ненулевое значение imageLabel, но break относится только и if. Если поставить break перед каждой закрывающей скобкой, то if просто не проверяется. Может, для таких ситуаций есть какое-то другое стандартное решение?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2009, 21:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос комманда break в двойном цикле (C++):

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

Цикл do.while и break - C++
Задача: написать программу, которая принимает от пользователя 10 int чисел, затем выводит их в строку, находит среднее значение. Так же...

Break и return - C++
Дано два кода на Си. #include&lt;stdio.h&gt; int func(char ,char); void main() { char sym,str; int z; printf(&quot;Vvedite stroky:\n&quot;); ...

Инструкция break - C++
Эм, балуюсь с C++. Значит, отбираю простые числа, первый вариант программы: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...

оператор break - C++
Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И что его можно использовать только если...

Использование break - C++
using namespace std; void print_out(int n); int main(){ int n; cout&lt;&lt;&quot;введите число n:\n&quot;; cin&gt;&gt;n; if(n==0){...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alik-Soldier
9 / 9 / 0
Регистрация: 01.05.2009
Сообщений: 127
15.07.2009, 21:36 #2
Введи например какой-нибудь флажок,например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool flag=false;
for(int i=0; i<imageLabel.GetSize1(); ++i)
        {
             for(int j=0; j<imageLabel.GetSize2(); ++j)
            {
              if(imageLabel(i,j)!=0)
              {
                  flag=true;
                  labelCell.push_back(imageLabel(i,j));
                  break;
              }
           }
if(flag==true)
break;
       }
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
15.07.2009, 21:38 #3
Путь "в лоб". Возможно есть и элегантнее.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int flag=0;
for(int i=0; i<imageLabel.GetSize1(); ++i)
        {
             for(int j=0; j<imageLabel.GetSize2(); ++j)
            {
              if(imageLabel(i,j)!=0)
              {
                  labelCell.push_back(imageLabel(i,j));
                  flag=1;
                  break;
              }
           }
           if (flag == 1) break;
       }
0
HIMen
4135 / 1384 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
15.07.2009, 21:43 #4
Используй goto

C++
1
2
3
4
5
.....
goto metka;
.....
metka:
.....
0
Phantom
Эксперт C++
3164 / 846 / 16
Регистрация: 29.12.2008
Сообщений: 952
15.07.2009, 21:44 #5
Используй оператор goto. Это один из классических случаев, когда его использование элегантно решает проблему.
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
15.07.2009, 21:46 #6
Способ, предложенный HIMen, более быстрый и существенно экономит ассемблерные операции (особенно когда много итераций цикла), но многие преподаватели за goto убить готовы Потому если для препода прога - то лучше флажки.
0
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
15.07.2009, 22:04 #7
Etudiante,
C++
1
2
3
4
5
6
7
8
9
10
try
{
    for...
    for...
       if (...)
           throw std::exception();
}
catch(std::exception&)
{
}
но лучше goto

многие преподаватели за goto убить готовы
объясни преподу что он ламер, и не понимает, когда целесообразно использовать goto, а когда - нет. :gigi:
0
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
15.07.2009, 22:08 #8
Цитата Сообщение от Rififi Посмотреть сообщение
объясни преподу что он ламер, и не понимает, когда целесообразно использовать goto, а когда - нет. :gigi:
Не все преподы могут адекватно это воспринять. По своему опыту. У нас был препод (по Паскалю) который утверждал что тип byte может принимать значения от -128 до +127. За программку
Pascal
1
2
3
4
var i:byte;
begin
i:=-1;
end.
мне оценку на 1 балл снизили (после того, как препод увидел мат компилятора на третью строку).
Хорошо хоть -5 не додумался присваивать переменной, а то б на пересдачу потом
З.Ы.Препод по Делфи оказался более адекватным, а по С++ был вообще - "свой человек".
0
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,513
Записей в блоге: 26
15.07.2009, 22:14 #9
Жирный +1 к тому, чтобы использовать goto
0
Phantom
15.07.2009, 22:19
  #10

Не по теме:

Жирный +1 к тому, чтобы объяснить такому преподу что он ламер

0
Evg
15.07.2009, 22:21
  #11

Не по теме:

Цитата Сообщение от Phantom Посмотреть сообщение
Жирный +1 к тому, чтобы объяснить такому преподу что он ламер
Как показывает практика, если препод ламер, то ему этого не объяснить

0
Phantom
15.07.2009, 22:27
  #12

Не по теме:

Evg, тоже верно

0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
15.07.2009, 22:28 #13
Ну да, меня тоже учили не использовать goto, но если у человека с адекватным мышлением забрать его, то это все равно, что писать на асме без джампов(может немного преувеличено и грубо, но близко к правде)
0
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
16.07.2009, 00:01  [ТС] #14
Значит, таки goto?
спасибо...
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
16.07.2009, 00:28 #15
Как говорил мой препод: "Если ты на 101% уверен, что goto только облегчает обстановку, при этом не делая код запутанным, его можно использовать.". Как-то так он говорил, по-моему. Эх...))
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2009, 00:28
Привет! Вот еще темы с ответами:

Break в циклах - C++
Такая проблема: занимаюсь по книге Эллайна, и в ней заговорилось о break и его использовании в циклах. Я, дабы проверить эту зверюгу на...

Оператор break - C++
Подскажите, пожалуйста почему оператор break в строке 44 выдаёт ошибку, и как её исправить? #include&lt;iostream.h&gt; #include&lt;conio.h&gt; ...

Как подсчитать Длину строки в двойном массиве char - C++
Как подсчитать Длину строки в двойном массиве char char c; int a; for(int j=0;j&lt;10;j++) for(int i=0;i&lt;10;i++) cin &gt;&gt;...

Ошибка доступа на break - C++
Здравствуйте! Пишу программу, по сути являющуюся мини базой данных, в которой должна быть возможность сохранить и загрузить базу. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2009, 00:28
Ответ Создать тему
Опции темы

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