В одномерном массиве поменяйте местами последний наименьший и первый наибольший элементы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Задача: В одномерном целочисленном массиве поменяйте местами последний наименьший и первый наибольший элементы. Выведите исходный и изменённый массив, а также индексы элементов, которые менялись местами (исходный массив должен формироваться с помощью ввода их с клавиатуры). Т.е., если ввожу массив: 22 29 8 3 4 22 15 6 3 29 должно получиться так: 22 3 8 3 4 22 15 6 29 29 2-ой и 9-ый элементы меняются местами. Пишу такую программу:
Она работает не совсем правильно. На этапе нахождения индекса минимального программа берёт индекс первого встретившегося. Пытаюсь заставить сделать, что мне нужно дополнительным условием:
Безуспешно. Подскажите, как исправить?

Решение задачи: «В одномерном массиве поменяйте местами последний наименьший и первый наибольший элементы»

textual
Листинг программы
uses Crt;
type Tmass =array[1..20] of Real;
var  a: Tmass;
     i,n,imax,imin:integer;
     max,min,k: Real;
begin
     ClrScr;
      repeat
         Write('N = ');
         Readln(n);
      until n <=20;
      for i := 1 to n do
       begin
         Write('A[ ', i, ' ] = ');
         Readln(a[i])
       end;
       Writeln;
      Writeln('Ishodniy massiv:');
       Writeln;
        for i:=1 to n do
         Write(a[i]:5:1);
          Writeln;
           Writeln;
      imax:=1; max:=a[1];
       for i:=2 to n do
        if a[i]>max
         then
          begin
            max:=a[i];
            imax:=i
          end;
      imin:=n; min:=a[n];
       for i:=(n-1) downto 1 do
        if a[i]<min
         then
          begin
            min:=a[i];
            imin:=i;
          end;
      k:=a[imin];
       a[imin]:=a[imax];
        a[imax]:=k;
      Writeln('Konecniy massiv:');
       Writeln;
        for i:=1 to n do
         Write(a[i]:5:1);
          Writeln;
           Writeln;
      if imax>imin
       then Writeln(imin,' i ',imax,' elementi menjajutcja mestami')
       else Writeln(imax,' i ',imin,' elementi menjajutcja mestami');
     ReadKey;
end.

Объяснение кода листинга программы

  1. Создается тип данных Tmass, который представляет собой одномерный массив из 20 элементов типа Real.
  2. Создается переменная a, которая представляет собой этот массив.
  3. Создаются три переменные: i, n и k. Переменная i используется для итерации по элементам массива, переменная n используется для определения количества элементов в массиве, а переменная k используется для обмена элементов.
  4. В цикле while считывается количество элементов в массиве (n).
  5. Для каждого i от 1 до n считывается элемент массива a[i].
  6. Инициализируются переменные imax и imin. Переменная imax устанавливается равной i, а переменная imin устанавливается равной n.
  7. В цикле от (n-1) до 1 считывается, если текущий элемент массива a[i] больше max, то обновляется max и imax, иначе ничего не происходит.
  8. В цикле от (n-1) до 1 считывается, если текущий элемент массива a[i] меньше min, то обновляется min и imin, иначе ничего не происходит.
  9. Обмениваются местами элементов с индексами imin и imax.
  10. Выводится окончательный результат.
  11. Завершается программа.

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы