Я искал в интернете этот конкретный метод, но там не было ничего, что я искал. Я написал эту программу, которая принимает ввод в целых числах и печатает сообщение (как в цифровой клавиатуре мобильных телефонов). То, что я хочу сделать с этой программой, это взять ввод в одну строку как
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;
}
Если вы хотите обработать один входной сигнал, предполагая, что много цифр, которые может содержать сообщение, наверняка переполнились бы, даже если он целочисленный тип 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». Вам придется позаботиться о двух трудностях: