C++ C++;将手机键盘号码翻译成字母表
简单地说,该程序要求用户输入一个非空数字序列,例如44477610223332145,最多17位,并将其输出为字母句子。翻译如下: 2是“A”,22是“B”,222是“C”,3是“D”等 保留0表示空格,1表示暂停,例如441444,以拆分44和444。 现在我的代码遇到了运行时错误,因为我真的是C++新手,我不知道这里发生了什么。请帮我查一下。谢谢 感谢您的评论,指出我没有包括错误消息,它说“向量下标超出范围”C++ C++;将手机键盘号码翻译成字母表,c++,C++,简单地说,该程序要求用户输入一个非空数字序列,例如44477610223332145,最多17位,并将其输出为字母句子。翻译如下: 2是“A”,22是“B”,222是“C”,3是“D”等 保留0表示空格,1表示暂停,例如441444,以拆分44和444。 现在我的代码遇到了运行时错误,因为我真的是C++新手,我不知道这里发生了什么。请帮我查一下。谢谢 感谢您的评论,指出我没有包括错误消息,它说“向量下标超出范围” #包括 #包括 #包括 #包括 使用名称空间std; int main() { 字
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串n;
向量o;
int i,x(0);
地图字符;
{
字符[“2”]=“A”;
字符[“22”]=“B”;
字符[“222”]=“C”;
字符[“3”]=“D”;
字符[“33”]=“E”;
字符[“333”]=“F”;
字符[“4”]=“G”;
字符[“44”]=“H”;
字符[“444”]=“I”;
字符[“5”]=“J”;
字符[“55”]=“K”;
字符[“555”]=“L”;
字符[“6”]=“M”;
字符[“66”]=“N”;
字符[“666”]=“O”;
字符[“7”]=“P”;
字符[“77”]=“Q”;
字符[“777”]=“R”;
字符[“7777”]=“S”;
字符[“8”]=“T”;
字符[“88”]=“U”;
字符[“888”]=“V”;
字符[“9”]=“W”;
字符[“99”]=“X”;
字符[“999”]=“Y”;
字符[“9999”]=“Z”;
字符[“0”]=“”;
}
cout>n;
对于(i=0;i<17;i++)
{
如果(n.at(i)=n.at(i+1))
o[x]=n.at(i)+n.at(i+1);
其他的
x++;
o[x]=n.at(i);
}
对于(x=0;x
用于第17个元素,则不能执行,因为之后没有元素,并且n.at(17)
将抛出std::超出范围
使用以下方法尝试此操作:
if(i<16&&n.at(i)==n.at(i+1))
而n.at(i)==n.at(i+1)
将不会对i==16进行评估
而且
程序要求用户输入一系列非空数字,例如44477610223332145最多17位
但是,即使n
更短,您的循环也要迭代17次。您也可以使用此方法
无效解码(字符arr)
{
字符键盘[][5]={“0”、“1”、“ABC2”、“DEF3”、“GHI4”、“JKL5”、“MNO6”、“PQRS7”、“TUV8”、“WXYZ9”、“”、“#”};
char-ch,*str;
尺寸=1;
int i,j=0
str = (char*)malloc(sizeof(char) * size);
for(i = 0; i < strlen(arr); i++)
{
switch(arr[i])
{
case '0':
ch = keypad[0][1];
if (arr[i] == arr[i + 1])
{
ch = keypad[0][0];
i++;
}
break;
case '1':
ch = keypad[1][0];
i++;
break;
case '2':
ch = keypad[2][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[2][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[2][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[2][3];
i++;
}
break;
case '3':
ch = keypad[3][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[3][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[3][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[3][3];
i++;
}
break;
case '4':
ch = keypad[4][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[4][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[4][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[4][3];
i++;
}
break;
case '5':
ch = keypad[5][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[5][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[5][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[5][3];
i++;
}
break;
case '6':
ch = keypad[6][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[6][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[6][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[6][3];
i++;
}
break;
case '7':
ch = keypad[7][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[7][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[7][2];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[7][3];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[7][4];
i++;
}
break;
case '8':
ch = keypad[8][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[8][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[8][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[8][3];
i++;
}
break;
case '9':
ch = keypad[9][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[9][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[9][2];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[9][3];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[9][4];
i++;
}
break;
case '.':
continue;
}
*(str + j) = ch;
str = (char*)realloc(str,size * sizeof(char));
j++;
}
str[j] = '\0';
printf("%s",str);
free(str);
str=(char*)malloc(sizeof(char)*size);
对于(i=0;iif(i < 16 && n.at(i) == n.at(i + 1))
str = (char*)malloc(sizeof(char) * size);
for(i = 0; i < strlen(arr); i++)
{
switch(arr[i])
{
case '0':
ch = keypad[0][1];
if (arr[i] == arr[i + 1])
{
ch = keypad[0][0];
i++;
}
break;
case '1':
ch = keypad[1][0];
i++;
break;
case '2':
ch = keypad[2][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[2][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[2][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[2][3];
i++;
}
break;
case '3':
ch = keypad[3][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[3][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[3][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[3][3];
i++;
}
break;
case '4':
ch = keypad[4][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[4][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[4][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[4][3];
i++;
}
break;
case '5':
ch = keypad[5][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[5][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[5][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[5][3];
i++;
}
break;
case '6':
ch = keypad[6][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[6][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[6][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[6][3];
i++;
}
break;
case '7':
ch = keypad[7][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[7][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[7][2];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[7][3];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[7][4];
i++;
}
break;
case '8':
ch = keypad[8][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[8][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[8][2];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[8][3];
i++;
}
break;
case '9':
ch = keypad[9][0];
if(arr[i] == arr[i + 1])
{
ch = keypad[9][1];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[9][2];
i++;
}
if(arr[i] == arr[i + 1])
{
ch = keypad[9][3];
i++;
}
if (arr[i] == arr[i + 1])
{
ch = keypad[9][4];
i++;
}
break;
case '.':
continue;
}
*(str + j) = ch;
str = (char*)realloc(str,size * sizeof(char));
j++;
}
str[j] = '\0';
printf("%s",str);
free(str);