Как получить ввод в целых числах и распечатать сообщение (цифровая клавиатура)

Я искал в интернете этот конкретный метод, но там не было ничего, что я искал. Я написал эту программу, которая принимает ввод в целых числах и печатает сообщение (как в цифровой клавиатуре мобильных телефонов). То, что я хочу сделать с этой программой, это взять ввод в одну строку как

Enter the code to crack : 454545479833165445

и соответствующее сообщение печатается.
Скорее, чем

Enter the code to crack :55
Enter the code to crack : 666

и печатает сообщение, когда я нажимаю определенную клавишу, которая в данном случае равна -1.

  #include <iostream>
using namespace std;

int main()
{
int a;
string n;
do{
cout << "Enter the code to crack";
cin >>a;

switch (a){

case 0:
{n=n+" ";}
break;

case 1:
{n=n+".";}
break;

case 11:
{n=n+",";}

break;

case 2:{

n=n+"a";}
break;

case 22:
n=n+"b";
break;

case 222:
n=n+"c";
break;

case 3:
n=n+"d";
break;

case 33:
n=n+"e";
break;

case 333:
n=n+"f";
break;case 4:
n=n+"g";
break;

case 44:
n=n+"h";
break;

case 444:
n=n+"i";
break;

case 5:
n=n+"j";
break;

case 55:
n=n+"k";
break;

case 555:
n=n+"l";
break;case 6:
n=n+"m";
break;

case 66:
n=n+"n";
break;

case 666:
n=n+"o";
break;

case 7:
n=n+"p";
break;

case 77:
n=n+"q";
break;

case 777:
n=n+"r";
break;case 7777:
n=n+"s";
break;

case 8:
n=n+"t";
break;

case 88:
n=n+"u";
break;

case 888:
n=n+"v";
break;

case 9:
n=n+"w";
break;

case 99:
n=n+"x";
break;

case 999:
n=n+"y";
break;

case 9999:
n=n+"z";
break;}
} while(a!=-1);
cout <<"The decoded message is :" << n;

return 0;
}

2

Решение

Если вы хотите обработать один входной сигнал, предполагая, что много цифр, которые может содержать сообщение, наверняка переполнились бы, даже если он целочисленный тип lognest, вы должны использовать строковый ввод и выполнить итерации по его символам:

string a;
string n;

cout << "Enter the code to crack";
cin >>a;   // you'll get everything, but each digit is a char

for (int i=0; i<a.size(); i++) {
//... process each separate digit a[i] here
}
cout <<"The decoded message is :" << n;

Каждая цифра a [i] находится между «0» и «9». Вам придется позаботиться о двух трудностях:

  • строка может содержать недопустимые символы (например, алфавитно-цифровые), поэтому вы должны обработать эти случаи, выдав сообщение об ошибке
  • каждая строка поступает отдельно. Так что больше не 44, а «4» и еще «4». Таким образом, вы должны учесть в своем алгоритме предыдущую цифру, чтобы увидеть, есть ли у вас смещение последней выходной буквы на одну, или если у вас есть новая выходная буква.
2

Другие решения


По вопросам рекламы [email protected]