Для решения этой задачи на языке Pascal нам понадобится выполнить несколько последовательных шагов: объявить массив, заполнить его случайными числами, найти индексы (позиции) минимального и максимального элементов, а затем поменять их значения местами. Ниже представлен полный код программы с подробными комментариями. Программа на Pascal pascal
program SwapMinMax; const N = 10; // Размер массива var arr: array[1..N] of integer; i: integer; minIndex, maxIndex: integer; temp: integer; begin // Инициализируем генератор случайных чисел randomize; // 1. Заполнение массива и вывод исходного состояния writeln('Исходный массив:'); for i := 1 to N do begin // Формула для диапазона [-10, 10]: random(21) дает 0..20, вычитаем 10 arr[i] := random(21) - 10; write(arr[i], ' '); end; writeln; // 2. Поиск индексов минимального и максимального элементов // Предполагаем, что первый элемент является и минимальным, и максимальным minIndex := 1; maxIndex := 1; for i := 2 to N do begin if arr[i] < arr[minIndex] then minIndex := i; if arr[i] > arr[maxIndex] then maxIndex := i; end; writeln('Минимум: ', arr[minIndex], ' (позиция ', minIndex, ')'); writeln('Максимум: ', arr[maxIndex], ' (позиция ', maxIndex, ')'); // 3. Обмен значений через третью переменную (temp) // Это стандартный алгоритм "трех стаканов" temp := arr[minIndex]; arr[minIndex] := arr[maxIndex]; arr[maxIndex] := temp; // 4. Вывод измененного массива writeln('Массив после перестановки:'); for i := 1 to N do write(arr[i], ' '); writeln; readln; // Чтобы консоль не закрылась сразу end. Use code with caution.Подробный разбор алгоритма- Генерация чисел: Функция
random(21)возвращает целое число от 0 до 20. Чтобы сдвинуть этот диапазон в интервал [-10, 10], мы вычитаем 10. - Поиск позиций: Нам важно сохранять не сами значения
minиmax, а их индексы (minIndex,maxIndex). Если мы будем знать только значения, мы не сможем найти их точное место в памяти для замены. - Логика поиска:
- Мы проходим циклом по массиву.
- Если текущий элемент меньше того, что лежит по адресу
minIndex, обновляем индекс. - Аналогично поступаем для максимума.
- Механизм обмена: Напрямую присвоить
arr[minIndex] := arr[maxIndex]нельзя, так как старое значение минимума будет стерто. Поэтому мы сначала сохраняем минимум во временную переменнуюtemp.
Результат работы программы (пример)
Исходный массив:
5 -3 10 0 -10 2 8 -4 7 1
Минимум: -10 (позиция 5)
Максимум: 10 (позиция 3)
Массив после перестановки:
5 -3 -10 0 10 2 8 -4 7 1
Могу также подготовить блок-схему для этого алгоритма или адаптировать код под динамический массив, если это потребуется.
Форма ответа
Ответы и вопросы пользователей