Сумма старших разрядов двух больших чисел типа char - PullRequest
0 голосов
/ 23 января 2019

У меня есть два числа типа char, скажем

char* N1;
char* N2;

N1 = "92345610172222";
N2 = "12351097654671";

Мне нужно добавить MSD из двух чисел, т. Е.

9 + 1 = 10

Я решил типизациейи деление числа до тех пор, пока оно не встретит одну цифру, используя два цикла. Суммируйте его и верните результат.

int sumMsd(char *N1, char *N2) {
    int one = (int)*N1;
    int two = (int)*N2;
    while (one >= 10)
        one /= 10;
    while (two >= 10)
        two /= 10;
    return one+two;
}

Логика не работает, когда размер int очень велик.Итак, мне нужно оптимизировать свое решение без использования библиотечных функций.Я ищу решение в C.

1 Ответ

0 голосов
/ 23 января 2019

Это должно работать.

int sumMsd(char *N1, char *N2) {
    return (N1[0] - '0') + (N2[0] - '0');
}

Пусть первая цифра N1 будет '3'.Тогда «3» - «0» равно 3, разница между их значениями ASCII.

...