两个由从a至z的字符组成的字答串,以26进制相加,求和

#include <string>
#include <iostream>
using namespace std;
bool isLegal(string inputStr)//判断其是否完全由a-z的字符组成
{
    for (int i = 0; i < inputStr.length(); i++)
    {
        if (inputStr[i]<'a' || inputStr[i]>'z')
            return false;
    }
    return true;
}
string addString(string input1, string input2)//两个等长的字符串相加
{
    string result;
    int len = input1.length();
    int value;//当前位的值
    int addbit=0;//进位
    for (int i = len-1; i >= 0; i--)
    {
        value = input1[i] - 'a' + input2[i] - 'a' + addbit;
        result = (char)( 'a' + value % 26) + result;
        addbit = (value) / 26;
        

    }
    if (addbit>0)
        result =  'b'+ result;
    return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
    string inputStr1;
    string inputStr2;
    string result;
    
    printf("intput first string\n");

    cin>>inputStr1;
    printf("intput second string\n");
    cin >> inputStr2;
    if (isLegal(inputStr1) && isLegal(inputStr2))
    {
        int firstLen = inputStr1.length();
        int secondLen = inputStr2.length();
        if (firstLen < secondLen)
        {
            for (int i = firstLen; i < secondLen; i++)
            {
                inputStr1 = 'a' + inputStr1;
            }
        
        }
        else
        {
            for (int i = secondLen; i < firstLen; i++)
            {
                inputStr2 = 'a' + inputStr2;
            }
            
        }


    }
    else{
        printf("请输入两个合法的字符串\n");
    }
    
    result = addString(inputStr1, inputStr2);
    cout <<"result is :"<< result << endl;
    std::system("pause");
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/perfection2901/p/10546831.html
今日推荐