Разработать функцию, принимающую два числа в виде списка (вектора) цифр в одной системе счисления, и возвращающую число — результат сложения.в виде списка (вектора) цифр в другой системе счисления.
Текстовый файл:
<ситема_A>: <цифра_A1>, <цифра_A2>, ... <цифра_AN>
<ситема_B>: <цифра_B1>, <цифра_B2>, ... <цифра_BM>
<ситема_C>
Пример: сложить FF16 и HELLO36, результат вывести в двоичной системе счисления
16: 15, 15
36: 17, 14, 21, 21, 24
2
Реализовать функцию
std::vector<int> plus(const std::vector<int> &A, int baseA,
const std::vector<int> &B, int baseB, int baseResult);
… реализующую сложение чисел в различных системах счисления, и возвращающую результат в требуемой системе счисления.
Альтернативный синтаксис с использованием списков:
std::list<int> plus(const std::list<int> &A, int baseA,
const std::list<int> &B, int baseB, int baseResult);
Функция должна проверять исходные данные на корректность и возвращать пустой список (вектор) в случае обнаружения ошибок.
Помимо основной функции, потребуется также реализовать функции чтения и записи списка (вектора) чисел, а также разбор файла с входными данными.
Файл с результатом в виде списка цифр в том же формате записи как и исходные данные. Приведенный выше пример должен дать следующий ответ:
1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1
Для основной функции plus
должен быть создан набор тестов, проверяющих корректность вычислений на наборе примеров, а также проверяющий корректность поведения в случае некорректных исходных данных. Приветствуется также тестирование функций ввода/вывода.
Дополнительно реализовать поддержку записи исходных данных для систем счисления от 2 до 36 в виде строки. Пример выше будет записан в этом случае в более понятной форме:
16: "FF"
36: "HELLO"
2
Аналогично и результат
"1101111100001011011011011"