如何在C++中使用诸如"exit"之类的词来停止循环?
How to stop a loop by using a word such as "exit" in C++?
所以我有一个编码分配要完成,而且我很难完成它。确切的说明如下:
为了使电话号码更容易记住,有些公司使用字母显示他们的电话号码。例如,使用字母,电话号码438-5626可以显示为获得贷款。在某些情况下,为了使电话号码有意义,公司可能会使用七个以上的字母。例如,225-5466可以显示为呼叫家,它使用八个字母。
编写一个执行以下操作的程序:
- 提示用户输入y或y开始转换,或任何其他输入以退出。
- 提示用户输入以字母表示的电话号码,并输出相应的电话号码
- 如果用户输入七个字母,则仅处理前七个字母。
- 在第三位数字之后输出 - (连字符)。
- 允许用户同时使用大写字母和小写字母以及单词之间的空间。
- 处理用户所需的电话号码,同时允许他们在每次转换后退出。
我目前已经完成了所有步骤,除了最后一个(类型)。
讲师正在寻找"退出"一词。退出程序。目前,我已经设置为"%"结束程序。从逻辑上讲,您会说要更改"%"退出"并继续前进,但是当我这样做时我会出错。
#include <iostream>
using namespace std;
int main()
{
int counter;
char phoneNumber;
char cont;
// Prompts a user to enter Y or y to begin conversion, or any other input to quit.
cout << "Please enter 'Y' or 'y' to continue, otherwise the program with quit.n Input: ";
cin >> cont;
if (cont == 'y' || cont == 'Y')
{
// statement(s) will execute if the boolean expression is true
}
else
{
return 0;
// statement(s) will execute if the boolean expression is false
}
cout << "To stop this program enter 'exit'." << endl;
cout << "Enter a phone number in letters only nNOTE: Must enter 7 or more letters: ";
cin >> phoneNumber;
cout << endl;
phoneNumber = static_cast<char>(toupper(phoneNumber));
while (phoneNumber != '%')
{
cout << "nTo stop this program enter 'exit'." << endl;
cout << "Enter a phone number in letters only." << endl;
for (counter = 0; phoneNumber != '%' && counter < 7; counter++)
{
cin >> phoneNumber;
if (counter == 3)
cout << "-";
if ((phoneNumber >= 'A' && phoneNumber <= 'Z') ||
(phoneNumber >= 'a' && phoneNumber <= 'z'))
switch (phoneNumber)
{
case 'A':
case 'a':
case 'B':
case 'b':
case 'C':
case 'c':
cout << 2;
break;
case 'D':
case 'd':
case 'E':
case 'e':
case 'F':
case 'f':
cout << 3;
break;
case 'G':
case 'g':
case 'H':
case 'h':
case 'I':
case 'i':
cout << 4;
break;
case 'J':
case 'j':
case 'K':
case 'k':
case 'L':
case 'l':
cout << 5;
break;
case 'M':
case 'm':
case 'N':
case 'n':
case 'O':
case 'o':
cout << 6;
break;
case 'P':
case 'p':
case 'Q':
case 'q':
case 'R':
case 'r':
case 'S':
case 's':
cout << 7;
break;
case 'T':
case 't':
case 'U':
case 'u':
case 'V':
case 'v':
cout << 8;
break;
case 'W':
case 'w':
case 'X':
case 'x':
case 'Y':
case 'y':
case 'Z':
case 'z':
cout << 9;
break;
}
}
while (cin.get() != 'n')
;
}
return 0;
}
我认为这与Char有关,这就是我所能找到的。我一直在搜索互联网寻找答案,但我空了。您可以提供的任何帮助将不胜感激。
如果要将声音变量更改为"退出",则需要是字符串,而不是字符串。
在C 中,字符和字符串之间存在很大的区别。char是一个字符,而字符串是一堆字符。对于字符串,一堆可能意味着0、1或更多字符。通过使用撇号(用于char)或引号(用于字符串)的二二,两者是区分的。由于您的程序仅使用char作为输入,因此当您获得超过一个字符的输入时,您的程序不知道如何处理。您将必须使用字符串来包括您必须写"退出"的情况。
程序的基本结构应为:
int main() {
std::string line;
while (std::getline(std::cin, line) && line != "exit") {
std::cout << phone_digits(line) << "n";
}
}
这几乎就像它一样简单。"退出"条件不是严格必要的,因为关于如何发出输入末端的广泛惯例。在Windows上,它是Ctrl Z,而在Unix-like系统(Linux,NetBSD,MacOS)上,它是Ctrl D。
我也不明白为什么您首先要输入" y"来实际启动该程序。这也是不必要的,但是您的老师可能会坚持这一点。
接下来的事情是编写phone_digits
函数,并将其放置在上方的主函数上方。此函数将字符串作为参数并返回字符串。
std::string phone_digits(const std::string &input) {
std::string result;
// TODO: convert letters from input to digits in output
// TODO: insert the hyphen in the result
return result;
}
要以此形式编写函数,您必须读取std::string
类的文档,以了解如何从输入中循环所有字符以及如何将字符添加到结果字符串的末尾。
- 如何循环打印顶点结构
- 如何在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++中带有数组和指针的循环
- 在 c++ 和程序中使用循环遍历数组说"exit status -1"?
- 如何在C++中使用诸如"exit"之类的词来停止循环?
- 在具有静态对象的类的析构函数中使用 exit(),不会像预期的那样结束无限循环