Task 1 complete

This commit is contained in:
2024-11-13 03:14:10 +03:00
parent 9b62ccfeb5
commit ae0196994e
3 changed files with 101 additions and 0 deletions

4
.gitignore vendored
View File

@@ -58,3 +58,7 @@ tags
# Persistent undo # Persistent undo
[._]*.un~ [._]*.un~
# ccls
a.out
.ccls
.ccls-cache/*

79
task1.cpp Normal file
View File

@@ -0,0 +1,79 @@
// Задание 1
// Написать программу для сложения и вычитания двух больших чисел в
// столбик. Для представления чисел использовать массив, в котором будут
// храниться цифры числа. При реализации процедуры вычитания
// предпочтительно из большего вычитать меньшее. Для этого
// первоначально определять, какое из двух чисел больше
#include <iostream>
int* sum(int *a, int *b, int size)
{
// a - первое число
// b - второе число
// size - длина числа
// Инициализируем массив для хранения результирующего числа с длиной size
// ************************************************************************
// *ВНИМАНИЕ! Скобки на конце заполняют массив нулями! ЭТО ВАЖНО!
// *В Windows массив может изначально содержать биты, неочищенные из памяти
// *после работы других программ, что приведет непредвиденным последствиям!
// ************************************************************************
int *result = new int[size]();
// Выполняем поразрядное сложение
for (int i = 0; i < size; i++)
{
int sum = a[i] + b[i];
result[i] = sum % 10; // Помещаем то, что оказалось меньше 10, в текущий разряд
if (i + 1 < size) // Избегаем вставку в следующий разряд при переполнении
{
a[i + 1] += sum / 10; // Помещаем то, что оказалось больше 10, в следующий разряд
}
}
// Возвращаем результирующий массив
return result;
}
int main() {
std::setlocale(LC_ALL, "ru");
int size;
int *a;
int *b;
std::cout << "Максимально предусматриваемая длина числа: ";
std::cin >> size;
// Инициализируем массивы чисел. Все элементы аналогично инициализируем нулями
a = new int[size]();
b = new int[size]();
std::cout << "Введите первое число: ";
for (int i = 0; i < size; i++)
{
std::cin >> a[i];
a[i] %= 10;
}
std::cout << "Введите второе число: ";
for (int i = 0; i < size; i++)
{
std::cin >> b[i];
b[i] %= 10;
}
int *result = sum(a, b, size);
std::cout << "Результат сложения: ";
for (int i = 0; i < size; i++)
{
std::cout << int(result[i]) << " ";
}
std::cout << std::endl;
return 0;
}

18
task2.cpp Normal file
View File

@@ -0,0 +1,18 @@
// Задание 2
// Написать программу для реализации ускоренного сложения чисел в
// двоичной системе (аналогично примеру на рис. 1)
#include <iostream>
bool* sum(bool* a, bool* b, unsigned char size)
{
}
int main() {
unsigned char size;
return 0;
}