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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выход из цикла наилучшим образом 
:(
    Опции темы
Abbath1349
Дата 12.6.2011, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть 2 цикла в функции 
Код

for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(!IsEmpty[i,j])
{
i=10;
j=10;
return true;
}

Как наилучшим образом сделать,чтобы после того как условие if(!IsEmpty[i,j]) выполнялось, функция возвращала true и циклы больше не происходили. 
PM MAIL   Вверх
boostcoder
Дата 12.6.2011, 17:47 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Код

bool ok = false;

for(int i=0;i<10;i++)
   for(int j=0;j<10;j++)
      if(!IsEmpty[i,j]) {
         i=10;
         j=10;
         ok = true;
         break;
      }
   }
   if ( ok ) break;
}

PM WWW   Вверх
Sartorius
Дата 12.6.2011, 17:55 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Чем же плох

Код

for(int i=0;i<10;i++)
 for(int j=0;j<10;j++)
  if(!IsEmpty[i,j]) return true;

?
PM MAIL ICQ   Вверх
Abbath1349
Дата 12.6.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Sartorius @ 12.6.2011,  17:55)
Чем же плох

Код

for(int i=0;i<10;i++)
 for(int j=0;j<10;j++)
  if(!IsEmpty[i,j]) return true;

?

а тут после return true функция завершается? или дальше по циклу идёт?
PM MAIL   Вверх
Sartorius
Дата 12.6.2011, 21:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Завершиться  smile 
Быстрее проверить, чем на форум постить  smile 
PM MAIL ICQ   Вверх
boostcoder
Дата 12.6.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата(Abbath1349 @  12.6.2011,  21:46 Найти цитируемый пост)
а тут после return true функция завершается?

 smile 
PM WWW   Вверх
Dem_max
Дата 14.6.2011, 09:16 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



тут подойдет всем ненавистный goto


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
bsa
Дата 14.6.2011, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dem_max @  14.6.2011,  09:16 Найти цитируемый пост)
тут подойдет всем ненавистный goto 

Вот именно тут, он и не нужен. Так как необходимо завершение функции.
PM   Вверх
borisbn
Дата 14.6.2011, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



чуть модифицированный вариант boostcoder'а
Код

bool found = false;
for (int i=0;i<10 && found == false;i++)
   for (int j=0;j<10 && found == false;j++)
      if( !IsEmpty[i,j] ) { // весёленькая строчка IsEmpty[i,j]... это из паскаля или из фортрана, кажется
         i=10;
         j=10;
         found = true;
      }
   }
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 14.6.2011, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Кстати, есть подозрение, что IsEmpty[i,j] делает не совсем то, что ожидается. Имхо, имеет смысл сделать IsEmpty[i][j] или IsEmpty(i, j)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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