2013-03-19 5 views
0

У меня есть небольшая проблема с объективом c и условиями. Как мы можем показать, что на 6 условиях, которые я даю как минимум 3, нужно проверить как правильные?Несколько условий в объекте C

Спасибо за ваш ответ!

ответ

1
int counter = 0; 
if (condition1) counter++; 
if (condition2) counter++; 
if (condition3) counter++; 
if (condition4) counter++; 
if (condition5) counter++; 
if (condition6) counter++; 
if (counter >= 3) { 
    // something 
} 
+0

получил меня на 5 секунд –

+0

Большое спасибо за оперативную и совершенную помощь – user2187565

3

Вы можете сделать это, как:

int validated=0; 

if(condition1){ 
    validated++; 
} 
if(condition2){ 
    validated++; 
} 
if(condition3){ 
    validated++; 
} 
if(condition4){ 
    validated++; 
} 
if(condition5){ 
    validated++; 
} 
if(condition6){ 
    validated++; 
} 
if(validated>=3){ 
     //do your stuffs 
} 
+0

+1 за бытие :) – DrummerB

0

Вы могли бы попытаться считать правильные условия:

псевдо-код:

int counter = 0; 
if(A) counter++; 
if(B) counter++; 
if(C) counter++; 
if(D) counter++; 
if(E) counter++; 
if(F) counter++; 

if(counter >= 3){ 
//do stuff here 
} 
counter = 0; 
+0

'== true'? Да? –

+0

geez, вы, ребята, быстры. – adamup

+1

может быть, если (! (A == true) == 0) –

0

В дополнение к ответам уже дал , вот более гибкое решение для переменного количества условий:

int conditions[6] = {condition1, condition2, condition3, 
        condition4, condition5, condition6}; 
int counter = 0; 
for (int i = 0; i < sizeof(conditions)/sizeof(int); i++) { 
    counter += conditions[i]; // Assuming your conditions are 0 or 1. 
} 
if (counter >= 3) { 
    // do something 
} 
+0

New эксперименты :) –

+0

Вы можете оптимизировать этот код внутри цикла, 'if (counter == 3) break;': D –

0
@interface Conditions 
@property (nonatomic, strong) NSMutableArray *conditions; 

- (void) addCondition: (Condition*) theCondition; 
- (NSInteger) count; 
- (NSInteger) satisfying: (void (^block)(Condition*) ); 
@end 

Оберните список условий в объекте. Когда вам нужно знать, если три условия:

if ([self.conditions satisfying: ^(Condition *c){ return [c isSatisfied]; })>3) {...}; 

Это массовое убийство - возможно нелепое излишество - если это одноразовый проект. Но если долгосрочное обслуживание является проблемой, это отделяет условие от деталей реализации. Вы избегаете длинного списка условностей. Вы можете легко добавлять или изменять условия, и если их логика усложняется, у вас есть хороший объектно-ориентированный интерфейс для решения этой проблемы. (Условие - это, вероятно, протокол, работающий как фасад, а не объект).

Смежные вопросы