Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Задание: Найти в массиве минимальный и максимальный элементы и поменять из значения местами.
- Алгоритм действий:
- 1. Спросить у пользователя, сколько элементов будет в его массиве.
- 2. Поочерёдно считывать значения с клавиатуры, добавляем их в массив.
- 3. Для того, чтобы поменять местами минимальный и максимальный элементы массива, нам нужно найти и запомнить на каких позициях (индексах) они находятся. Значит, нам нужно где-то хранить эти значения, поэтому мы должны создать 2 переменные (первая для хранения индекса минимального числа в массиве, вторая для хранения индекса максимального числа в массиве).
- 4. Далее присвоим этим переменным начальное значение 0 (предположим, что первый элемент массива является и самым большим и самым маленьким числом одновременно).
- 5. Создадим еще 2 переменные для хранения максимального и минимального значений в массиве. (хотя этот шаг не обязателен, но для простоты понимания кода, лишним не будет)
- 6. Выполним поиск внутри массива. Проходимся по массиву и:
- 6.1. Записываем в промежуточную переменную, значение текущего элемента массива
- 6.2. Сравниваем значение текущего элемента массива с значением, ранее найденного, минимального элемента (текущий элемент массива < минимального), если текущее значение меньше, чем у минимального, значит мы нашли число, которое меньше минимального и нам надо его запомнить, а также запомнить индекс данного элемента.
- 6.3. Сравниваем значение текущего элемента массива с значением, ранее найденного, максимального элемента (текущий элемент массива > максимального), если текущее значение больше, чем у максимального, значит мы нашли число, которое больше максимального и нам надо его запомнить, а также запомнить индекс данного элемента.
- 7. На этом этапе мы уже знаем где находятся минимальное и максимальное числа, а также их значения.
- 8. Меняем их местами.
- // Задание: найти в массиве минимальное и максимальное число и поменять их местами
- var
- N: integer; // количество элементов в массиве
- indexMin: byte; // порядковый номер минимального числа в массиве
- indexMax: byte; // порядковый номер минимального числа в массиве
- min: integer; // значение минимального числа в массиве
- max: integer; // значение максимального числа в массиве
- begin
- Write('Введите количество элементов в массиве: ');
- readln(N); // получаем сколько элементов должно быть в нашем массиве
- writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
- var arr: array of integer; // создаём пустой массив для хранения целых чисел
- SetLength(arr,N); // выделяем память (указываем размер) для массива
- writeln('Введите элементы массива: '); // красиво вводим числа в массив
- for var i:=0 to N-1 do begin
- write('arr[',i,']= ');
- readln(arr[i]);
- end;
- writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
- indexMin:= 0; // предполагаем, что минимальное число стоит на первом местве в массиве
- indexMax:= 0; // предполагаем, что максимальное число стоит на первом местве в массиве
- min:=arr[0]; // записываем первое число массива как минимальное
- max:=arr[0]; // записываем первое число массива как максимальное
- for var index:=1 to N-1 do begin
- var number:= arr[index]; // запоминаем в переменную текущий элемент массива
- if number<min then begin // если текущий элемент массива меньше минимального, значит нам изменить значения у переменных min и indexMin
- min:=number; // запоминаем новое значение минимального элемента
- indexMin:=index;// запоминаем индекс (место) на котором находится этот элемент
- end;
- if number>max then begin // если текущий элемент массива больше максимального, значит нам изменить значения у переменных max и indexMax
- max:=number; // запоминаем новое значение максимального элемента
- indexMax:=index;// запоминаем индекс (место) на котором находится этот элемент
- end;
- end;
- //Дополнительная информация, для красоты
- writeln('Минимальное значение в массиве - это: ',min,', его индекс: ', indexMin);
- writeln('Максимальное значение в массиве - это: ',max,', его индекс: ', indexMax);
- writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
- // выводим на экран исходный массив
- // '#9' написано для того, чтобы массивы писались одинаково ровно (ну там скобочки на одних и тех же местах), для удобства сравнения. Можешь раскомментировать следующую строку, чтобы увидеть как оно работает
- writeln('Исходный массив: '#9'', arr);
- // writeln('Исходный массив: ', arr);
- // меняем местами минимальное и максимальные значения
- arr[indexMin] := max;
- arr[indexMax] := min;
- // выводим на экран изменённый массив
- // '#9' написано для того, чтобы массивы писались одинаково ровно (ну там скобочки на одних и тех же местах), для удобства сравнения. Можешь раскомментировать следующую строку, чтобы увидеть как оно работает
- write('Изменённый массив: '#9'',arr);
- // write('Изменённый массив: ',arr);
- end.
- #############################################################################################
- Второе решение, укороченное, без красивостей и комментариев:
- // Задание: найти в массиве минимальное и максимальное число и поменять их местами
- var
- N: integer;
- indexMin: byte;
- indexMax: byte;
- begin
- Write('Введите количество элементов в массиве: ');
- readln(N);
- var arr: array of integer;
- SetLength(arr,N);
- writeln('Введите элементы массива: ');
- for var i:=0 to N-1 do
- readln(arr[i]);
- indexMin:= 0;
- indexMax:= 0;
- for var index:=1 to N-1 do begin
- if arr[index]<arr[indexMin] then
- indexMin:=index;
- if arr[index]>arr[indexMax] then
- indexMax:=index;
- end;
- writeln('Исходный массив: '#9'', arr);
- var buff: integer;
- buff := arr[indexMin];
- arr[indexMin] := arr[indexMax];
- arr[indexMax] := buff;
- write('Изменённый массив: '#9'',arr);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement