使用 while 或 do while 退出循环

克里斯海格

这是给学校的

我使用的实现与我在以前的项目中使用的实现相同,在该实现中,我只创建一个终止变量,然后在读取该终止变量时跳出循环。但是,对于我编写的这个程序,我的退出语句只是读入用户输入并继续执行该程序。我已经尝试了 while 循环和 do while 循环。

这是我的程序


int main() {
  std::string input;
  std::string terminate = "end";
  std::transform(terminate.begin(), terminate.end(), terminate.begin(),::toupper); //Extra stuff makes it not case sensitive

  std::cout << "This program checks for a balanced expression" << std::endl << "Enter 'end' to end the program" << std::endl;

  while(input != terminate){
    std::cout << "Enter Expression: ";
    std::cin >> input;

    if(checkBalance(input))
      std::cout << input << " " << "is balanced" << std::endl;
    else
      std::cout << input << " " << "is not balanced" << std::endl;


    }

  return 0;
}
德米特里

有两件事会中断您的代码工作

std::transform(terminate.begin(), terminate.end(), terminate.begin(),::toupper); //Extra stuff makes it not case sensitive

首先是逻辑问题。您对预定义的字符串执行操作终止但不更改用户输入字符串input事实上,你可以更换你的

std::string terminate = "end";
std::transform(terminate.begin(), terminate.end(), terminate.begin(),::toupper); //Extra stuff makes it not case sensitive

一排

std::string terminate = "END";

接下来是在读取循环之前更改行的大小写,因此它无法修改用户输入,它仅定义字符串的初始状态。因此需要修改字符串修改位置目标

int main() {
  std::string input;
  // Replace two initial rows by one with the same result
  std::string terminate = "END";

  std::cout << "This program checks for a balanced expression" << std::endl << "Enter 'end' to end the program" << std::endl;

  while(input != terminate){
    std::cout << "Enter Expression: ";
    std::cin >> input;

    if(checkBalance(input))
      std::cout << input << " " << "is balanced" << std::endl;
    else
      std::cout << input << " " << "is not balanced" << std::endl;

    // Modify user input to upper case for possibility of successful check on next while loop 
    std::transform(input.begin(), input.end(), input.begin(),::toupper); //Extra stuff makes it not case sensitive

    }

  return 0;
}

checkBalance(input)之后找到输入修改,因为我不确定它可以对input进行哪些修改实际上输入大小写转换最合乎逻辑的位置是直接读取字符串之后,即之后

std::cin >> input;

再一记。您的初始代码应该为END输入(即大写)退出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用子例程退出Fortran中的“ do while”循环

来自分类Dev

程序不会退出do-while循环

来自分类Dev

使用while循环时Bash退出状态

来自分类Dev

如何使用户退出while循环

来自分类Dev

如何使用条件测试退出while循环?

来自分类Dev

如何退出while循环?

来自分类Dev

XPages从while循环退出

来自分类Dev

退出While循环

来自分类Dev

如何退出while循环

来自分类Dev

使用C#中的列表的do-while循环的退出条件

来自分类Dev

使用C中的scanf在!= EOF处退出do while循环会额外进行3次迭代

来自分类Dev

实施do while并退出

来自分类Dev

Do-While循环中的switch语句不会退出

来自分类Dev

在C中-使用strtok时While循环退出问题

来自分类Dev

使用ssh读取一行后退出while循环

来自分类Dev

使用读取系统调用时,While 循环不会退出

来自分类Dev

使用do while循环加载setbackground

来自分类Dev

Java循环数组使用do ... while

来自分类Dev

使用do while循环进行setbackground加载

来自分类Dev

使用do while循环访问菜单

来自分类Dev

Generator在while循环中退出

来自分类Dev

python while循环不退出

来自分类Dev

无法退出while循环,(C ++)?

来自分类Dev

While循环不会退出Java

来自分类Dev

JavaScript不会退出while循环

来自分类Dev

我无法退出while循环

来自分类Dev

python while循环不退出

来自分类Dev

在winapi中退出while循环

来自分类Dev

代码不会退出 while 循环