diff --git a/task1.cpp b/task1.cpp index 4c39cfd..a4d23c1 100644 --- a/task1.cpp +++ b/task1.cpp @@ -15,21 +15,21 @@ int* sum(int *a, int *b, int size) // Инициализируем массив для хранения результирующего числа с длиной size // ************************************************************************ - // *ВНИМАНИЕ! Скобки на конце заполняют массив нулями! ЭТО ВАЖНО! + // *ВНИМАНИЕ! Скобки на конце инициализируют массив нулями! ЭТО ВАЖНО! // *В Windows массив может изначально содержать биты, неочищенные из памяти // *после работы других программ, что приведет непредвиденным последствиям! // ************************************************************************ int *result = new int[size](); // Выполняем поразрядное сложение - for (int i = 0; i < size; i++) + for (int i = size - 1; i >= 0; i--) { int sum = a[i] + b[i]; result[i] = sum % 10; // Помещаем то, что оказалось меньше 10, в текущий разряд - if (i + 1 < size) // Избегаем вставку в следующий разряд при переполнении + if(i - 1 >= 0 && sum >= 10) // Избегаем вставку в следующий разряд при переполнении { - a[i + 1] += sum / 10; // Помещаем то, что оказалось больше 10, в следующий разряд + b[i - 1] = b[i - 1] + sum / 10; // Помещаем то, что оказалось больше 10, в следующий разряд } } @@ -56,14 +56,12 @@ int main() { 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); @@ -71,7 +69,7 @@ int main() { std::cout << "Результат сложения: "; for (int i = 0; i < size; i++) { - std::cout << int(result[i]) << " "; + std::cout << result[i] << " "; } std::cout << std::endl; diff --git a/task2.cpp b/task2.cpp index 4c7cafb..a12e35c 100644 --- a/task2.cpp +++ b/task2.cpp @@ -4,9 +4,32 @@ #include -bool* sum(bool* a, bool* b, unsigned char size) -{ +bool isZero(bool* a, int size) { + for (int i = 0; i < size; i++) { + if (a[i] == 1) { + return false; + } + } + return true; +} +bool* sum(bool* a, bool* b, int size) +{ + bool* result = new bool[size](); + + bool* remainder = new bool[size](); + for (int i = 0; i < size; i++) + { + remainder[i] = b[i]; + } + + while (!isZero(b, size)) + { + for (int i = 0; i < size; i++) + { + + } + } } int main() {