Даны два массива A и B размеров m и n соответственно, заполненные десятичными цифрами. Считая цифры A и B записями чисел,
найти сумму этих чисел.
C/C++
Помогите написать код С++ через векторы (без классов)
Крутим цикл и складываем с переносом, делов-то.
const size_t m = ...;
const size_t n = ...;
const int A[m];
const int B[n];
// массивы надо чем-нибудь заполнить, рандомом или с клавиатуры, каждый элемент - в диапазоне [0, 9]
size_t k = min(m, n);
size_t l = max(m, n);
int shorter[] = m < n ? A : B;
int longer[] = m < n ? B : A;
int sum[l + 1];
size_t i;
sum[l] = 0; // младший разряд - переноса нет
// складываем цифры обеих чисел с переносом
for (i = 0; i < k; ++i) {
sum[l - i] += shorter[k - i - 1] + longer[l - i - 1];
if (sum[l - i] > 9) { // перенос
sum[l - i] -= 10;
sum[l - i - 1] = 1;
} else { // переноса нет
sum[l - i - 1] = 0;
}
}
// продолжаем сложение переноса с цифрами более длинного числа
for (; i < l; ++i) {
sum[l - i] += longer[l - i - 1];
if (sum[l - i] > 9) { // перенос
sum[l - i] -= 10;
sum[l - i - 1] = 1;
} else { // переноса нет
sum[l - i - 1] = 0;
}
}
// на выходе sum - сумма, записанная от большего разряда к меньшему, не более max(m, n) + 1 цифр
Да, и на входе ожидается, что числа записаны от большего разряда к меньшему, и элементы массивов находятся в диапазоне [0, 9].
Иван Жардецкий
но мне надо через векторы?
Похожие вопросы
- Помогите написать код! С++ Строки (без использования классов)
- Помогите написать код
- Помогите написать код с файлами C++
- Помогите написать код с файлами C++
- Программирование на C++ .Помогите написать код.
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите написать код решения уравнения, желательно на с++
- Помогите написать код (как можно примитивнее)
- Помогите написать код c++
- Помогите написать код на Си, по теме "строки".