如何在C++中使用诸如"exit"之类的词来停止循环?

How to stop a loop by using a word such as "exit" in C++?

本文关键字:循环 exit C++      更新时间:2023-10-16

所以我有一个编码分配要完成,而且我很难完成它。确切的说明如下:

为了使电话号码更容易记住,有些公司使用字母显示他们的电话号码。例如,使用字母,电话号码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类的文档,以了解如何从输入中循环所有字符以及如何将字符添加到结果字符串的末尾。