Сложить два массива (символьные строки) и вывести ответ, при этом занести его в третий массив

Задание:

Даны два символьных ряда (char) a и b (состоят из цифр и знака минус), которые представляют собой два целых числа. Нужно создать функцию, которая считает сумму двух строк и заполняет ей третий массив. Функция должна иметь возможность обработать строки символов длинной до 100.

Я написала код, который считает сумму позитивных чисел (мой код может посчитать сумму любых двух позитивных натуральных чисел, например - 24 + 24 = 48), но у меня никак не выходит написать код, который считает сумму с отрицательным числом. (допустим 24 + (-12) = 12)

Вот мой код:

#include <iostream>
#include <string.h>
using namespace std;

const int n = 100;

void summ(char* a, char* b, char* c) {
   int a_len = strlen(a), b_len = strlen(b);
   int a_tmp = a_len - 1, b_tmp = b_len - 1, tmp, r = 0, digit;

   for (int i = 0; i < max(a_len, b_len) + 1; ++i) {


    tmp = ((a[a_tmp] - '0') + (b[b_tmp] - '0')) + r;
    if (b_tmp < 0)
        tmp = (a[a_tmp] - '0') + r;
    if (a_tmp < 0)
        tmp = (b[b_tmp] - '0') + r;

    if (tmp > 9) {
        digit = tmp % 10;
        c[i] = digit + '0';
        r = 1;
    }
    else {
        r = 0;
        c[i] = tmp + '0';
    }
    a_tmp--;
    b_tmp--;
  }
}

int main() {
    int T;
    char a[n];
    char b[n];
    char c[n];
    do {
        cin >> a;
        cin >> b;
        summ(a, b, c);
        for (int i = strlen(c) - 1; i >= 0; --i) {
            cout << c[i];
        }
        cout << "\nПродолжить - 1, закончить - 0." << endl;
        cin >> T;

    } while (T == 1);
}

Ответы (1 шт):

Автор решения: Sublimer

Я написал своё решение на это задание.

#include <iostream>
#include <ctime>

using std::cout;
using std::cin;

int main() {
    setlocale(LC_ALL, "ru");
    srand(time(NULL));

    const int SIZE = 100;

    char a[SIZE];
    char b[SIZE];
    int c[SIZE];
    int j = 1;

    for (int i = 0; i < SIZE; i++) {
        a[i] = rand() % 99;
        b[i] = rand() % 99;
    }

    for (int i = 0; i < SIZE; i++) {
        c[i] = int(a[i] + b[i]);
    }

    cout << "Добавление:" << std::endl;
    for (int i = 0; i < SIZE; i++) {
        cout << int(a[i]) << " + " << int(b[i]) << " = " << c[i] << std::endl;
    }

    for (int i = 0; i < SIZE; i++) {
        c[i] = int(a[i] - b[i]);
    }

    cout << "Вычитание:" << std::endl;
    for (int i = 0; i < SIZE; i++) {
        cout << int(a[i]) << " - " << int(b[i]) << " = " << c[i] << std::endl;
    }
}

Можно использовать метод int, чтобы конвертировать char в integer.

→ Ссылка