在C ++中对消息进行逻辑错误加密

时间:2019-05-10 20:30:08

标签: c++

代码应计算每个字符。如果字符是数字,则它应将前一个字符算作数字。 因此,如果输入为“ a”,则应将“ a”计数一次,然后将其分配给现在等于1的计数器。 但是如果'a'之后为3,则表示'aaa',并且应该计数'a'3次,并将其分配给现在等于3的计数器。 注意:该程序适用于所有字母,但是如果这个字母没有解决,那么编写其余字母有什么意义呢?

我已经尝试为数字专门设置另一个循环,但是没有用。

char secret_message[1000];
    int counter,number_counter;
    int acounter=0;

    gets(secret_message);

    for (counter = 0 ; secret_message[counter] != NULL ; counter++)
    {
        if (secret_message[counter]=='a')
            acounter++;

        if (secret_message[counter] >= '0' && secret_message[counter] <= '9')
        {
            for(number_counter=1;number_counter<=secret_message[counter];number_counter++)
            {               
                if (secret_message[counter-1]=='a')
                    acounter++;
            }
        }
    }
    cout<<endl<<"acounter is:"<<acounter;

如果输入为a3,则输出应为3,但应为52!

1 个答案:

答案 0 :(得分:0)

您需要将数字从文本转换为数字,然后使用加法:

if (isdigit(secret_message[counter]))
{
    const int value = secret_message[counter] - '0';
    acounter += value;
}