Сложить два массива (символьные строки) и вывести ответ, при этом занести его в третий массив
Задание:
Даны два символьных ряда
(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 шт):
Я написал своё решение на это задание.
#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.