crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Замена множественного сравнения
RazrFalcon
  опции профиля:
сообщение 28.12.2011, 1:51
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Имеем:
if (some1 == some2 || some3 == some4 || some5 == some6) {
blah-blah();
}

Как заменить можно, на более читабельное? Так как сравнений может быть и 10 и 20...
Может можно как то циклом проверять... хз.


UPD:
еще вариант:
if (value == 0)
    value = func1();
if (value == 0)
    value = func2();
if (value == 0)
    value = func3();
if (value == 0)
    value = func4();
...


Сообщение отредактировал RazrFalcon - 28.12.2011, 3:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.12.2011, 6:11
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


if (
     some1 == some2
|| some3 == some4
|| some5 == some6
)
{
  blah-blah();
}


while(1)
{
   if(value=func1())break;
   if(value=func2())break;
   if(value=func3())break;
   if(value=func4())break;
   break;
}


если значения someN поддаются хешированию или сами являются удобным ключом, то можно их поместить в ассоциативный контейнер, а тогда проверять станет возможно универсально - циклом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 28.12.2011, 20:04
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Если значения распихать по массивам, то можно примерно так:
for (int i = 0; i<count; i++) {
   if(some1[i] == some2[i]) {
      blah-blah();
      break;
   }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.11.2024, 4:22