重新开始循环 c++
Starting a loop over again c++
这段代码可能有点模糊,但这个问题是关于我必须上交的作业,并将检查抄袭,所以我只给出我问题的要点。
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)
{
//....
}
}
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串