c++编程题2——ISBN计算识别码

c++编程题2——ISBN计算识别码_第1张图片
输入描述:
为一个ASCII码字符串。内容为ISBN的前三段,以上面为例,就是0-670-82162
输出描述:
若判断输入为合法的字符串,则计算出识别码,
若不合法,则输出字符串“ERROR”
示例:
输入

0-670-82162

输出

0-670-82162-4

编程如下:

#include
#include
#include
#include
using namespace std;

int main(void)
{
    cout << "输入字符串" << endl;
    string str;
    cin >> str;
    int str_len = 0;
    str_len =str.length();

    if(str_len != 11)
    {
        cout << "ERROR" << endl;
        return 0;
    }

    int a[9];
    int j=0;
    for(int i=0; i<11; i++)
    {
        if(i==1 || i == 5)
        {
            if(str[i] != '-')
            {
                cout << "ERROR" << endl;
                return 0;
            }
        }
        if(i!=1 && i!=5)
        {
            if(str[i]>='0' && str[i] <='9')
            {
                a[j]=str[i]-'0';
                j++;
            }
            else
            {
                cout << "ERROR" << endl;
                return 0;
            }
        }       
    }
    int sum = 0;
    for(int i=0; i<9; i++)
    {
        sum +=a[i]*(i+1);
    }
    int end = sum % 11;

    string c_end;
    if(end == 10)
    {
        c_end = 'X';
    }
    else
    {
        stringstream stream;     //声明一个stringstream变量 
        stream << end;
        stream >> c_end;
    }
    str +='-';
    str +=c_end;

    cout <return 0;
}

你可能感兴趣的:(c++)