0

我对目标 c 和条件有一个小问题。我们如何证明在 6 个条件下,我给出的至少 3 个必须被验证为正确?

谢谢您的回答!

4

5 回答 5

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
 }
于 2013-03-19T17:13:40.200 回答
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
}
于 2013-03-19T17:14:09.670 回答
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;
于 2013-03-19T17:14:51.600 回答
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
}
于 2013-03-19T17:26:26.077 回答
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) {...};

如果这是一个一次性的项目,这就是矫枉过正——也许是可笑的矫枉过正。但是,如果长期维护是一个问题,这会使条件与实施细节脱钩。你避免了长长的条件列表。您可以轻松地添加或更改条件,如果它们的逻辑变得复杂,您将拥有一个很好的面向对象的界面来处理它。(条件可能是作为门面运行的协议,而不是对象)。

于 2013-03-19T17:40:01.373 回答