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

问题描述 投票:0回答:3

所以我有一个编码任务要完成,我在完成它时遇到了麻烦。确切的说明如下:

为了使电话号码更容易记住,一些公司使用字母显示其电话号码。例如,使用字母,电话号码438-5626可以显示为GET LOAN。在某些情况下,为了使电话号码有意义,公司可能会使用七个以上的字母。例如,225-5466可以显示为CALL HOME,它使用八个字母。

编写执行以下操作的程序:

  • 提示用户输入Y或y开始转换,或退出其他任何输入。
  • 提示用户输入以字母表示的电话号码并以数字形式输出相应的电话号码
  • 如果用户输入七个以上字母,则仅处理前七个字母。
  • 在第三位数字后输出-(连字符)。
  • 允许用户同时使用大写和小写字母以及单词之间的空格。
  • 在每次转换后允许他们退出的同时,处理用户想要的尽可能多的电话号码。

我目前已经完成了所有步骤,除了最后一个(有点)。

指导员正在寻找单词“ exit”以退出程序。目前,我已将其设置为“%”以结束程序。逻辑上,您会说只是将“%”更改为“ exit”并继续前进,但是这样做时会出现错误。

#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;
}

我认为这与字符有关,这就是我所能找到的全部。我一直在互联网上寻找答案,但是我空了出来。您能提供的任何帮助将不胜感激。

c++ loops exit
3个回答
0
投票

如果您想将phonenumber变量更改为“ exit”,则必须为字符串,而不是字符。


0
投票

在C ++中,字符和字符串之间有很大的区别。字符是单个字符,而字符串是一堆字符。对于字符串,一串可以表示0、1个或多个字符。通过使用撇号(对于char)或引号(对于字符串)来区分两者。由于您的程序仅使用char作为输入,因此当您获得的输入长度超过一个字符时,您的程序将不知道如何处理该字符。您将必须使用字符串来包括必须编写“ exit”的情况。


0
投票

程序的基本结构应为:

int main() {
    std::string line;

    while (std::getline(std::cin, line) && line != "exit") {
        std::cout << phone_digits(line) << "\n";
    }
}

几乎就这么简单。由于存在关于如何用信号通知输入结束的广泛约定,因此“退出”条件不是严格必需的。在Windows上,它是Ctrl + Z,而在类​​似UNIX的系统(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类的文档,以了解如何遍历输入中的所有字符以及如何将字符添加到结果字符串的末尾。

© www.soinside.com 2019 - 2024. All rights reserved.