/
AirLexa
/
03
Обзор
Документация
Войти
/
AirLexa
/
03
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_04/Task_3/Task_3.cpp
72 строки
2 KB
AirLexa
загрузил Lesson_04/Task_3/Task_3.cpp
29 дек 2025, 15:23
29 дек 2025, 15:23
e23cf2c
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> int* remove_dynamic_array_head(int* arr, int& size_l, int& size_f) { if (--size_l * 3 > size_f) // есть еще размер, просто удаляем { for (int i = 0; i < size_l; i++) arr[i] = arr[i+1]; return arr; } // иначе, создаем новый маленький массив size_f = size_l; int* tmp = new int[size_f](); for (int i = 0; i < size_l; i++) tmp[i] = arr[i+1]; delete[] arr; return tmp; } void print_dynamic_array(std::string str, int* arr, int logical_size, int actual_size) { std::cout << str; if (actual_size == 0) std::cout << " Пустой!"; else 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::string s = ""; for (;;) { std::cout << "Удалить первый элемент? (д/н) "; std::cin >> s; if (s != "д" || size_log == 0) break; arr = remove_dynamic_array_head(arr, size_log, size_fak); print_dynamic_array("Динамический массив:", arr, size_log, size_fak); } if (size_log != 0) print_dynamic_array("Спасибо! Ваш массив:", arr, size_log, size_fak); else std::cout << "Невозможно удалить первый элемент, так как массив пустой. До свидания!" << std::endl; return 0; }