我对目标 c 和条件有一个小问题。我们如何证明在 6 个条件下,我给出的至少 3 个必须被验证为正确?
谢谢您的回答!
我对目标 c 和条件有一个小问题。我们如何证明在 6 个条件下,我给出的至少 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
}
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
}
您可以尝试计算正确的条件:
伪代码:
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;
除了已经给出的答案之外,这里还有一个针对可变数量条件的更灵活的解决方案:
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
}
@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) {...};
如果这是一个一次性的项目,这就是矫枉过正——也许是可笑的矫枉过正。但是,如果长期维护是一个问题,这会使条件与实施细节脱钩。你避免了长长的条件列表。您可以轻松地添加或更改条件,如果它们的逻辑变得复杂,您将拥有一个很好的面向对象的界面来处理它。(条件可能是作为门面运行的协议,而不是对象)。