C ++中的流控制构造,如何修改?

时间:2012-08-31 20:18:47

标签: c++ loops if-statement for-loop

以下是代码段。如果if语句成功,我想回到循环1。如果if语句成功,我需要程序不添加1000。

程序开头的

editA.i == 0。

我想比较两列字符串并获得距离度量。

我尝试过break和continue命令,但是没有一个能按我的意愿工作。

谢谢

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works, 
            // I want to go back to "Loop 1". How???

            sum+= abs(editA.i - editB.j);

        else
            sum+= 1000;
    }

}

3 个答案:

答案 0 :(得分:11)

for(editA.i; editA.i<6; editA.i++)  // Loop 1 
{ 
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2 
    { 
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works  I want to go back to "Loop 1"
        {
            sum+= abs(editA.i - editB.j); 
            break ;
        }

        else 
            sum+= 1000; 
    } 
} 

答案 1 :(得分:1)

如果你只想逃离内循环,我会在'if语句'中添加一个break语句。如果要完全转义两个循环,则应使用return语句。

答案 2 :(得分:1)

Grzegorz的回答是正确的,但是,您的要求可能会有所不同。

这是你想要的吗?

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    bool found = false;
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j]) {  
           sum+= abs(editA.i - editB.j);
           found = true;
           break; 

       }

    }
    if ( !found ) {
        sum += 1000;
    }
}