Advertisement
Lonely_Wanderer

Замена местами минимального и максимального элементов в массиве

Jan 26th, 2024 (edited)
1,407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 9.27 KB | None | 0 0
  1. Задание: Найти в массиве минимальный и максимальный элементы и поменять из значения местами.
  2.  
  3. Алгоритм действий:
  4. 1. Спросить у пользователя, сколько элементов будет в его массиве.
  5. 2. Поочерёдно считывать значения с клавиатуры, добавляем их в массив.
  6. 3. Для того, чтобы поменять местами минимальный и максимальный элементы массива, нам нужно найти и запомнить на каких позициях (индексах) они находятся. Значит, нам нужно где-то хранить эти значения, поэтому мы должны создать 2 переменные (первая для хранения индекса минимального числа в массиве, вторая для хранения индекса максимального числа в массиве).
  7. 4. Далее присвоим этим переменным начальное значение 0 (предположим, что первый элемент массива является и самым большим и самым маленьким числом одновременно).
  8. 5. Создадим еще 2 переменные для хранения максимального и минимального значений в массиве. (хотя этот шаг не обязателен, но для простоты понимания кода, лишним не будет)
  9. 6. Выполним поиск внутри массива. Проходимся по массиву и:
  10. 6.1. Записываем в промежуточную переменную, значение текущего элемента массива
  11. 6.2. Сравниваем значение текущего элемента массива с значением, ранее найденного, минимального элемента (текущий элемент массива < минимального), если текущее значение меньше, чем у минимального, значит мы нашли число, которое меньше минимального и нам надо его запомнить, а также запомнить индекс данного элемента.
  12. 6.3. Сравниваем значение текущего элемента массива с значением, ранее найденного, максимального элемента (текущий элемент массива > максимального), если текущее значение больше, чем у максимального, значит мы нашли число, которое больше максимального и нам надо его запомнить, а также запомнить индекс данного элемента.
  13. 7. На этом этапе мы уже знаем где находятся минимальное и максимальное числа, а также их значения.
  14. 8. Меняем их местами.
  15.  
  16.  
  17.  
  18. // Задание: найти в массиве минимальное и максимальное число и поменять их местами
  19. var
  20.   N: integer; // количество элементов в массиве
  21.   indexMin: byte; // порядковый номер минимального числа в массиве
  22.   indexMax: byte; // порядковый номер минимального числа в массиве
  23.   min: integer; // значение минимального числа в массиве
  24.   max: integer; // значение максимального числа в массиве
  25.  
  26. begin
  27.   Write('Введите количество элементов в массиве: ');
  28.   readln(N); // получаем сколько элементов должно быть в нашем массиве
  29.   writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
  30.  
  31.   var arr: array of integer; // создаём пустой массив для хранения целых чисел
  32.   SetLength(arr,N); // выделяем память (указываем размер) для массива
  33.  
  34.   writeln('Введите элементы массива: '); // красиво вводим числа в массив
  35.   for var i:=0 to N-1 do begin
  36.     write('arr[',i,']= ');
  37.     readln(arr[i]);
  38.   end;
  39.   writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
  40.  
  41.   indexMin:= 0; // предполагаем, что минимальное число стоит на первом местве в массиве
  42.   indexMax:= 0; // предполагаем, что максимальное число стоит на первом местве в массиве
  43.   min:=arr[0]; // записываем первое число массива как минимальное
  44.   max:=arr[0]; // записываем первое число массива как максимальное
  45.   for var index:=1 to N-1 do begin
  46.     var number:= arr[index]; // запоминаем в переменную текущий элемент массива
  47.     if number<min then begin // если текущий элемент массива меньше минимального, значит нам изменить значения у переменных min и indexMin
  48.       min:=number;    // запоминаем новое значение минимального элемента
  49.       indexMin:=index;// запоминаем индекс (место) на котором находится этот элемент
  50.     end;
  51.     if number>max then begin // если текущий элемент массива больше максимального, значит нам изменить значения у переменных max и indexMax
  52.       max:=number;    // запоминаем новое значение максимального элемента
  53.       indexMax:=index;// запоминаем индекс (место) на котором находится этот элемент
  54.     end;
  55.   end;
  56.  
  57.   //Дополнительная информация, для красоты
  58.   writeln('Минимальное значение в массиве - это: ',min,', его индекс: ', indexMin);
  59.   writeln('Максимальное значение в массиве - это: ',max,', его индекс: ', indexMax);
  60.   writeln('-------------------------------------------------'); // разделитель для красоты, можно удалить
  61.  
  62.   // выводим на экран исходный массив
  63.   // '#9' написано для того, чтобы массивы писались одинаково ровно (ну там скобочки на одних и тех же местах), для удобства сравнения. Можешь раскомментировать следующую строку, чтобы увидеть как оно работает
  64.   writeln('Исходный массив: '#9'', arr);
  65.   // writeln('Исходный массив: ', arr);
  66.  
  67.   // меняем местами минимальное и максимальные значения
  68.   arr[indexMin] := max;
  69.   arr[indexMax] := min;
  70.  
  71.   // выводим на экран изменённый массив
  72.   // '#9' написано для того, чтобы массивы писались одинаково ровно (ну там скобочки на одних и тех же местах), для удобства сравнения. Можешь раскомментировать следующую строку, чтобы увидеть как оно работает
  73.   write('Изменённый массив: '#9'',arr);
  74.   // write('Изменённый массив: ',arr);
  75. end.
  76.  
  77.  
  78.  
  79. #############################################################################################
  80.         Второе решение, укороченное, без красивостей и комментариев:
  81.  
  82. // Задание: найти в массиве минимальное и максимальное число и поменять их местами
  83.  
  84. var
  85.   N: integer;
  86.   indexMin: byte;
  87.   indexMax: byte;
  88.  
  89. begin
  90.   Write('Введите количество элементов в массиве: ');
  91.   readln(N);
  92.  
  93.   var arr: array of integer;
  94.   SetLength(arr,N);
  95.  
  96.   writeln('Введите элементы массива: ');
  97.   for var i:=0 to N-1 do
  98.     readln(arr[i]);
  99.  
  100.  
  101.   indexMin:= 0;
  102.   indexMax:= 0;
  103.  
  104.   for var index:=1 to N-1 do begin
  105.     if arr[index]<arr[indexMin] then
  106.       indexMin:=index;
  107.     if arr[index]>arr[indexMax] then  
  108.       indexMax:=index;
  109.   end;
  110.  
  111.   writeln('Исходный массив: '#9'', arr);
  112.   var buff: integer;
  113.   buff := arr[indexMin];
  114.   arr[indexMin] := arr[indexMax];
  115.   arr[indexMax] := buff;
  116.   write('Изменённый массив: '#9'',arr);
  117. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement