int Lab2_Dynamic() {
system("cls");
info();
SetColor(11, 0);
cout << "===============================================================================\n";
cout << "Лабораторная работа №2 (Динамический массив)\n";
cout << "===============================================================================\n";
SetColor(7, 0);
cout << "Задача: Задан массив x[1], x[2], ..., x[N] (размер N вводит пользователь).\n";
cout << " Определить номер первого отрицательного элемента и номер\n";
cout << " последнего отрицательного элемента.\n";
cout << "===============================================================================\n\n";
int N;
cout << "Введите количество элементов массива N: ";
if (!ReadIntWithESC(N) || N <= 0) {
SetColor(12, 0);
cout << "Ошибка! Размер массива должен быть положительным числом.\n";
SetColor(7, 0);
_getch();
return 0;
}
int* arr = new int[N];
cout << "\nВведите " << N << " целых чисел (ESC - выход):\n";
COORD coord = GetCursorPosition();
for (int i = 0; i < N; i++) {
SetCursorPosition(coord.Y, coord.X);
SPACEBACK(50);
cout << "x[" << i + 1 << "] = ";
if (!ReadIntWithESC(arr[i])) {
delete[] arr;
return 0;
}
}
cout << "\nВведённые числа: ";
for (int i = 0; i < N; i++) {
cout << "x[" << i + 1 << "] = " << arr[i];
if (i < N - 1) cout << ", ";
else cout << endl;
}
cout << endl;
// Поиск первого и последнего отрицательного
int firstIndex = -1;
int lastIndex = -1;
for (int i = 0; i < N; i++) {
if (arr[i] < 0) {
if (firstIndex == -1) firstIndex = i;
lastIndex = i;
}
}
// Вывод результатов
if (firstIndex != -1) {
cout << "Первый отрицательный элемент: x[" << firstIndex + 1 << "] = " << arr[firstIndex] << endl;
cout << "Последний отрицательный элемент: x[" << lastIndex + 1 << "] = " << arr[lastIndex] << endl;
} else {
SetColor(12, 0);
cout << "Отрицательных элементов в массиве нет!" << endl;
SetColor(7, 0);
}
delete[] arr;
cout << "\nНажмите любую клавишу для возврата в меню...";
_getch();
return 0;
}