/
AirLexa
/
03
Обзор
Документация
Войти
/
AirLexa
/
03
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_04/Task_2/Task_2.cpp
70 строк
2 KB
AirLexa
загрузил Lesson_04/Task_2/Task_2.cpp
29 дек 2025, 15:20
29 дек 2025, 15:20
710d320
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> int* append_to_dynamic_array(int* arr, int add_el, int& size_l, int& size_f) { if (size_l < size_f) // есть еще место, просто добавляем { arr[size_l++] = add_el; return arr; } // закончилось место, создаем новый массив size_f *= 2; int* tmp = new int[size_f](); for (int i = 0; i < size_l; i++) tmp[i] = arr[i]; tmp[size_l++] = add_el; delete[] arr; return tmp; } void print_dynamic_array(std::string str, int* arr, int logical_size, int actual_size) { std::cout << str; for (int i = 0; i < actual_size; i++) { std::cout << " "; if (i < logical_size) std::cout << arr[i]; else std::cout << "_"; } std::cout << std::endl; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int size_fak = 0, size_log = 0; std::cout << "Введите фактичеcкий размер массива: "; std::cin >> size_fak; std::cout << "Введите логический размер массива: "; std::cin >> size_log; if (size_log > size_fak) { std::cout << "Ошибка! Логический размер массива не может превышать фактический!" << std::endl; return -1; } int* arr = new int[size_fak](); // создаем массив с фактическим размером for (int i = 0; i < size_log; i++) { std::cout << "Введите arr[" << i << "]: "; std::cin >> arr[i]; } print_dynamic_array("Динамический массив:", arr, size_log, size_fak); std::cout << "\nСпециальный элемент = 0.\n"; int el = 0; for (;;) { std::cout << "Введите элемент для добавления:"; std::cin >> el; if (el == 0) break; arr = append_to_dynamic_array(arr, el, size_log, size_fak); print_dynamic_array("Динамический массив:", arr, size_log, size_fak); } print_dynamic_array("Спасибо! Ваш массив:", arr, size_log, size_fak); return 0; }