简体   繁体   中英

How to output invalid input on character limit and a space switch case?

This is the assignment I got, which is based on C++ program to Convert Letters into a Phone Number .

However, my lecturer ask for added details including:

  1. Insert alphabet as an input
  2. The entire alphabet to input is 15, including "space"; if it exceeds the count, display an appropriate message.
  3. Program will display the digit as the representation of the alphabet value, as a phone number.
  4. Digit for the alphabet is from 2 to 9; each digit per alphabet's representation refers to the program provided.
  5. 1 is for “space.”
  6. Add a sentinel loop in the program. Control by the user entering digit “0” to stop the program from looping

Unfortunately, I've yet to figure out how to implement number 2 and 5. Here's my current code:

#include <iostream>

using namespace std;

int main()
{
    char letter;
    int counter = 0;
    
    cout << "Enter Name" << endl;
 
    while (cin.get(letter) && counter < 15) {
           
        if (letter == '0') { 
            break; 
        }
          
        if (letter != ' ' && letter >= 'A' && letter <= 'z') {
            counter++; 
            if (letter > 'Z') {
                letter = (int)letter-32; 
            }
            
            if (counter < 15); {
                cout << "";
            }

            if (counter > 15); { 
                cout << "Invalid Input" << endl;
                break; 
            }

            switch (letter) {
                case ' ':
                case '\n':  
                case '\t':  
                    cout << "1";
                    break;
                case 'A':
                case 'B':
                case 'C':
                    cout << "2";
                    break;
                case 'D':
                case 'E':
                case 'F':
                    cout << "3";
                    break;
                case 'G':
                case 'H':
                case 'I':
                    cout << "4";
                    break;
                case 'J':
                case 'K':
                case 'L':
                    cout << "5";
                    break;
                case 'M':
                case 'N':
                case 'O':
                    cout << "6";
                    break;
                case 'P':
                case 'Q':
                case 'R':
                case 'S':
                    cout << "7";
                    break;
                case 'T':
                case 'U':
                case 'V':
                    cout << "8";
                    break;
                case 'W':
                case 'X':
                case 'Y':
                case 'Z':
                    cout << "9";
                    break;
                default:
                    cout << "Invalid input";
                    break;
            }
        }
    }
    
    return 0;
}

I've tried googling, yet there's barely answers, especially the switch case space part!

#include<iostream>
using namespace std;

int main()
{
    string phone;
    int counter=0;
    cout<<"Enter Name:";
    getline(cin,phone);
    counter = phone.length();
    if(counter>15) {
        cout<<"Invalid Input"<<endl;
        return 0; 
    }
    for(int i=0;i<phone.length();i++)
    {
        char letter = phone[i];
        switch(letter)
        {
            case ' ': cout<<"1 "; break;

            case 'A':
            case 'B':
            case 'C':
            if(letter=='A') cout<<"2 "; 
            else if(letter=='B') cout<<"22 "; 
            else if(letter=='C') cout<<"222 "; break;

            case 'D':
            case 'E':
            case 'F':
            if(letter=='D') cout<<"3 "; 
            else if(letter=='E') cout<<"33 "; 
            else if(letter=='F') cout<<"333 "; break;

            case 'G':
            case 'H':
            case 'I':
            if(letter=='G') cout<<"4 "; 
            else if(letter=='H') cout<<"44 "; 
            else if(letter=='I') cout<<"444 "; break;

            case 'J':
            case 'K':
            case 'L':
            if(letter=='J') cout<<"5 "; 
            else if(letter=='K') cout<<"55 "; 
            else if(letter=='L') cout<<"555 "; break;

            case 'M':
            case 'N':
            case 'O':
            if(letter=='M') cout<<"6 "; 
            else if(letter=='N') cout<<"66 "; 
            else if(letter=='O') cout<<"666 "; break;

            case 'P':
            case 'Q':
            case 'R':
            case 'S':
            if(letter=='P') cout<<"7 "; 
            else if(letter=='Q') cout<<"77 "; 
            else if(letter=='R') cout<<"777 "; 
            else if(letter=='S') cout<<"7777 "; break;

            case 'T':
            case 'U':
            case 'V':
            if(letter=='T') cout<<"8 "; 
            else if(letter=='U') cout<<"88 "; 
            else if(letter=='V') cout<<"888 "; break;

            case 'W':
            case 'X':
            case 'Y':
            case 'Z':
            if(letter=='W') cout<<"9 "; 
            else if(letter=='X') cout<<"99 "; 
            else if(letter=='Y') cout<<"999 "; 
            else if(letter=='Z') cout<<"9999 "; break;

            default:
            cout<<"Invalid Input"<<endl;
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM