2012-02-14 74 views
1


这是怎么应该工作:
如何运行代码循环,如果(A == b)和不循环,如果A = B没有 “其他”

if(a == b) 
    // loop code 
else 
    // run code one time no loop 

,但我想

if(a == b) 
for(int i = 0; i < 10; ++i) // if a is equal b begin loop 
some_function();    // if a is not equal b run code one time 

Solved!!!

+0

我喜欢的Torsten给出的答案。但是我必须添加这个附注:你应该使用大括号,把'for'就像没有大括号一样,这可能是非常容易出错和错误的! – Ajay 2012-02-15 17:06:55

回答

10

您可以设置循环限制。

int limit = a == b ? 1 : 10; 
for (i = 0; i < limit; ++i) 
{ 
    ... 
} 

如果a == b,循环运行一次。如果a!= b,循环运行的次数尽可能多(在你的情况下为10次)。

+0

真棒的主意!谢谢:)这就是即时寻找再次感谢。并感谢所有回答的人!祝大家好运 – CPLUSPLUS 2012-02-14 12:56:40

2

编写代码的方法,调用它在循环中多次,如果之后,称之为一次。 希望有所帮助。

2

先运行一次代码,如果符合条件运行循环(并根据需要调整循环表达式)。如果可能,请使用函数以避免重复代码。

run_code_one_time; 

if (a == b) { 
    your_loop; 
} 

// no else 
+0

-1他不想使用别人,因为它重复了代码。你的解决方案不能解决这个问题 – 2012-02-14 12:40:28

+1

@PaulManta你读过最后一句话了吗? – ouah 2012-02-14 12:41:57

+0

即使有函数,它仍然是代码重复的方式:) – jrok 2012-02-14 12:56:21

0
int i=0; 

while (a == b) 
{ 

    // code for when a is equal to b 
    i++; 
    if(i == 10) 
     a = b+1; 
} 

// code for when a is not equal to b executed once 
4

使用do {} while循环,因为它至少执行一次:

int i = 0; 
do 
{ 
} while (a == b && i++ < 9); 
+0

这并没有解决他的问题,这只是循环如果a == b,不会根据需要更改限制。 – 2012-02-14 12:52:23

+0

Off-by-one错误,'int i = 0; do {...} while(i ++ <10);'不同于'for(int i = 0; i <10; ++ i){...}' – 2012-02-14 12:54:11

+0

@DaveMackintosh,它确实解决了题。如果'a!= b'执行一次,如果'a == b'执行10次。 – hmjd 2012-02-14 12:54:32

2
int limit = (a==b)? 10 :1; 
     for (i=0;i<limit;i++) { 
      //your code 
     } 

limit将被设置为10,如果a==b否则为0左右,否则

其他方式

int limit = (a==b)? 0 :9; 
    for (i=limit;i<10;i++) { 
     // your code 
     } 

limit将被设置为0,如果a==b其他9否则

+0

万岁!不会有错误,也不会假设循环中“a”和“b”不会改变。这确实假设'i'在循环体中不会改变,但通常很安全。 – 2012-02-14 12:47:36

+0

@SteveJessop尝试第二个选项 – Shirish11 2012-02-14 12:54:23

+0

我所想的只是疯狂的情况,如果问题的“循环代码”中的代码向下修改“i”,则会导致额外的循环。因此,如果在'a!= b'情况下使用相同的代码(因为您按要求共享了它),那么它也会在'a!= b'情况下导致额外的循环。但更多地考虑它,提问者暗示当前代码在两种情况下都是相同的代码,并且循环变量'i'在当前的'a!= b'情况下甚至不在范围内,所以它不能可能会修改它。 – 2012-02-14 12:59:04

相关问题