Сложение целых чисел в массиве char

138
16 ноября 2019, 19:00
//227. Вводятся два очень длинных целых числа.Найти их сумму.
#include"pch.h"
#include<iostream>
#include<string>
using namespace std;
int main() {
    char one[] = "12456565650775";
    char two[] = "2132434355322";
        for(int i= strlen(one),j=strlen(two);(i=0)||(j=0);j--,i--){
            if (one[i] + two[j] > 9) {
                one[i - 1] = (one[i] + two[i]) / 10;
                one[i] = (one[i] + two[i]) % 10;
            }
            else { one[i]+= two[j]; }
    }
        for (int i = 0; i < strlen(one); ++i) {
            cout << one[i];
        }
}

//выводится не измененное первое число

Answer 1

У вас one[i] это не число, а символ(например это не 5, а '5'). Если найти символ '5' с таблице ASCII, то его код равен какому-то двузначному числу. Поэтому при проверке one[i]+two[i] > 9. Суммируются не числа внутри кавычек, а коды этих символов, поэтому даже если исправить ошибку с == в заголовке цикла, то программа не будет работать. Проблема с кодами символов решается просто. Создаёте функции

int charToInt(char x){
       return x - '0';
}
char intToChar(int x){
    return x+'0';
}

Они работают с кодом нуля. Ну и вам следует попробовать написать програмки попроще, прежде чем переходить на суммы длинных чисел. Ещё будут баги, когда вы выберете другие числа. Например при суммировании "123" и "12345".

READ ALSO
Трудоемкое формирование Excel через Apache POI

Трудоемкое формирование Excel через Apache POI

Всем привет, столкнулся с проблемой, при формирование эксель файла, процесс с каждой итерацией начинает тормозить, первые итерации проходят...

209
Не обновляется recycleview с адаптером

Не обновляется recycleview с адаптером

Пытаюсь сделать поиск, при изменении edittext обновляю recycleview, но он не хочет обновляться, то есть стирается (обнуляется), а новые записи не появляются,...

196
Отсутствие итерации цикла for

Отсутствие итерации цикла for

Есть массив intов и int, с которым мы сравниваем значения массиваЕсли одно из значений массива меньше одного их элементов, то печатаем сообщение...

173