数列を多倍長整数に変換する


関数名
mpStr2Num  数列を多倍長整数に変換する
形式
void mpStr2Num(int *num, char *str);
引数
num  (出力)変換された多倍長整数
str  (入力)数字列
関数値
なし
注意事項
多倍長整数の配列の各要素 ai(i は 1 以上)は1語を表し、 1語で表し得る最大の整数は 9999 とする。語の長さは a0 の値で表す。すなわち、多倍長整数は
anKn-1+ an-1Kn-2+...+a2K+ a1
で表現する。ただし、K=10000、n=a0

用例(mpStr2Num-test.c

プログラム(mpStr2Num.c
#define N 10000

void mpStr2Num(int *num, char *str)
{
    char *ss;
    int  *nn;
    int  k;
    int  x;

    while (*str == ' ' || *str == '\t') str++;
    while (*str == '0') str++;
    ss = str;
    while (*ss >= '0' && *ss <= '9') ss++;

    if (ss == str) {
        *num = 0;
        return;
    }

    x = 0;
    k = 1;
    nn = num;
    do {
        x += (*--ss - '0') * k;
        k *= 10;
        if (k == N || ss == str) {
            *++nn = x;
            x = 0;
            k = 1;
        }
    } while (ss != str);

    *num = nn - num;
}
説明

関連関数
多倍長整数の加算多倍長整数の減算多倍長整数の乗算多倍長整数の除算多倍長整数の平方根多倍長整数の大小比較多倍長整数を数列に変換するlong整数を多倍長整数に変換する多倍長整数をlong整数に変換する