重新开始循环 c++

Starting a loop over again c++

本文关键字:c++ 循环 重新开始      更新时间:2023-10-16

这段代码可能有点模糊,但这个问题是关于我必须上交的作业,并将检查抄袭,所以我只给出我问题的要点。

bool x = false;
while (x == false)
{
}
if (conditions)
{
    x = true;
}
while (x == true)
{
    if (a == b)
    {
        //....
    }
    else
        x = false;
}

我知道这段代码可能会令人困惑,但我会尽力解释我的问题:

减去最后一部分,一切都运行良好。在我的第二个 while 循环中,条件是 x == true,但如果 if 语句的条件(在 while 语句内)不满足,我想要 x == false,我希望它回到条件 x==false 的第一个 while 循环。但是,它设置 x == false,然后结束程序。

任何帮助,不胜感激。

例如,

您可以按以下方式编写

bool x = false;
do
{
    while ( x == false )
    {
        //...
    }
    if (conditions)
    {
        x = true;
    }
    while ( x == true )
    {
        if ( a == b )
        {
            //....
        }
        else
        {
            x = false;
        }
    }
} while ( x == false );

只有代码中存在逻辑错误,因为由于最后一次赋值 false 到 x,您将获得无限循环。也就是说,如果 x 不被分配为 false,则第二个 while 循环将是无限的,或者如果 x 被分配为 false,则外部 do while 循环将是无限的:)因此,您需要在此架构中添加一些其他条件。例如,可以再分配一个 x。

bool x = false;
do
{
    while ( x == false )
    {
        //...
    }
    if (conditions)
    {
        x = true;
    }
    while ( x == true )
    {
        if ( a == b )
        {
            //....
        }
        else
        {
            x = false;
        }
    }
    if ( one_more_condition ) x = true;
} while ( x == false );

或者,您可以在外部 do-while 循环或内部第二个 while 循环中的某个位置使用 break 语句。

你可以创建一个 else 块并使用 goto 返回:将firstloop:放在while (x == false)之前,然后将goto firstloop;放在x = false;之后

您需要在两个循环周围添加另一个循环。根据您的描述,我认为您可以使用另一个while (x==false)循环来做到这一点。例如,

bool x = false;
while (x==false)
{
 while (x == false)
 {...}
 ...
 while (x == true)
 {...}
}

但为了清楚起见,我可能会这样做:

bool x = false;
bool allDone = false;
while (allDone==false)
{
 while (x == false)
 {...}
 ...
 while (x == true)
 {...
   if (conditions)
     allDone = true;
  ...
 }
}

像这样使用:

        bool x = false;
        CheckCondition:
        while (x == false)
        {
        }
        if (conditions)
        {
            x = true;
        }
        while (x == true)
        {
            if (a == b)
            {
                //....
            }
            else
            {   
                x = false;
                goto CheckCondition;
            }   
        }

将两个 while 循环移动到另一个条件为 x==false 的 while 循环,以便您的代码看起来像下面的代码:

bool x = false;
while(x==false)
   {
       while (x == false)
       {
       }
       if (conditions)
       {
          x = true;
       }
       while (x == true)
       {
          if (a == b)
          {
          //....
          }
          else
          x = false;
       }
  }

将整个事情包装在一个 while 语句中,该语句在您想要时中断。底部会破裂,然后整个事情会回到顶部。

此外,您的 if 语句在逻辑上是多余的。当 x != false 时,顶部 while 语句将中断(因此为真)。

然后你可以这样使用:

        bool x = false;
        while (x == false)
        {
        }
        if (conditions)
        {
            x = true;
        }
        while (x == true)
        {
            if (a == b)
            {
                //....
            }
            else
            {   
                x = false;
                while (x == false)
                {
                }
                if (conditions)
                {
                    x = true;
                }
            }   
        }

此结构可能有效,具体取决于您正在执行的操作的详细信息

while (true) {
    for( bool x = false; x == false; ) {
        // do stuff... set x to true at some point
    }
    if (! conditions) break; // Done if conditions aren't met
    while (a == b)
    {
        //....
    }
}