C Добавление двух больших чисел по массиву символов - PullRequest
0 голосов
/ 30 марта 2019

Мне нужно добавить две большие цифры размером 0-100 цифр с массивом char, и я не знаю, как мне справиться с пустой ячейкой массива ..

Как сравнить ячейку массива с неназначенным номером? Я хочу разделить дело на две части.

bigM[i] == empty cell, directly put bigN[i] + carry in to sum[i] 
bigN[i] == empty cell, directly put bigM[i] + carry  in to sum[i]

//
// AddTwoBigNumbers: to sum up two big numbers represented as digits in a char clear_char_array
//
// input:  char bigN[], char bigM[]:  two large numbers
// output the sum as a big number in the input array char sum[]
void AddTwoBigNumbers(char bigN[], char bigM[], char sum[])
{
    reverseArray(bigN, 0, 100);
    reverseArray(bigM, 0, 100);

    //calculation
    int carry = 0;
    for(int i = 100; i >= 0; i--)
    {
        int sum_two = (bigN[i] - '0') + (bigM[i] - '0') + carry;
        sum[i] = sum_two % 10 + '0';
        carry = sum_two / 10;
    }

    reverseArray(sum, 0, 100);
}

Идеальная ссылка

1 Ответ

0 голосов
/ 30 марта 2019

Можно использовать счетчик для каждого массива.
Когда счетчик достигает конца массива, этот блок if больше не будет выполняться.
Когда оба счетчика достигнут конца массива, вырвитесьпетли.

//calculation
int i = 0;
int carry = 0;
int index = 0;
int next = 0;
while ( 1) {
    int sum_two = carry;
    if ( bigM[index]) {// not zero
        sum_two += bigM[index] - '0';
        index++
    }
    if ( bigN[next]) {//not zero
        sum_two += bigN[next] - '0';
        next++;
    }
    sum[i] = sum_two % 10 + '0';
    i++;
    carry = sum_two / 10;
    if ( bigM[index] == 0 && bigN[next] == 0) {//both are zero
        break;
    }
}
if ( carry) {
    sum[i] = carry + '0';
    i++;
}
sum[i] = 0;//terminate with zero
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...