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

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

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

Задача: В одномерном целочисленном массиве поменяйте местами последний наименьший и первый наибольший элементы. Выведите исходный и изменённый массив, а также индексы элементов, которые менялись местами (исходный массив должен формироваться с помощью ввода их с клавиатуры). Т.е., если ввожу массив: 22 29 8 3 4 22 15 6 3 29 должно получиться так: 22 3 8 3 4 22 15 6 29 29 2-ой и 9-ый элементы меняются местами. Пишу такую программу:
Листинг программы
  1. Type Mas = Array [1..20] of Real;
  2. Var a:Mas;
  3. i, N,imax,imin: Integer;
  4. max, min,k: Real;
  5. BEGIN
  6. Repeat
  7. Write('Введите N = ');
  8. readLn(N);
  9. Until N <= 20;
  10. For i := 1 to N do
  11. begin
  12. Write('A [ ', i, ' ] = ');
  13. ReadLn(A[i])
  14. end;
  15. writeln;
  16. imax:=1; max:=a[1];
  17. for i:=2 to N do
  18. if max<a[i] then
  19. begin
  20. max:=a[i]; imax:=i
  21. end;
  22. writeln;
  23. imin:=1; min:=a[1];
  24. for i:=2 to N do
  25. if min>a[i] then
  26. begin
  27. min:=a[i]; imin:=i;
  28. if min=a[i] then
  29. imin:=i;
  30. end;
  31. k:=a[imin];
  32. a[imin]:=a[imax];
  33. a[imax]:=k;
  34. writeln ('Максимальный элемент в массиве = ',max);
  35. writeln ('Его индекс в исходном массиве = ',imax);
  36. writeln ('Минимальный элемент в массиве = ',min);
  37. writeln ('Его индекс в исходном массиве = ',imin);
  38. For i:=1 to 10 do writeln(a[i],' ');
  39. end.
Она работает не совсем правильно. На этапе нахождения индекса минимального программа берёт индекс первого встретившегося. Пытаюсь заставить сделать, что мне нужно дополнительным условием:
Листинг программы
  1. if min=a[i] then
  2. imin:=i;
Безуспешно. Подскажите, как исправить?

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

textual
Листинг программы
  1. uses Crt;
  2. type Tmass =array[1..20] of Real;
  3. var  a: Tmass;
  4.      i,n,imax,imin:integer;
  5.      max,min,k: Real;
  6. begin
  7.      ClrScr;
  8.       repeat
  9.          Write('N = ');
  10.          Readln(n);
  11.       until n <=20;
  12.       for i := 1 to n do
  13.        begin
  14.          Write('A[ ', i, ' ] = ');
  15.          Readln(a[i])
  16.        end;
  17.        Writeln;
  18.       Writeln('Ishodniy massiv:');
  19.        Writeln;
  20.         for i:=1 to n do
  21.          Write(a[i]:5:1);
  22.           Writeln;
  23.            Writeln;
  24.       imax:=1; max:=a[1];
  25.        for i:=2 to n do
  26.         if a[i]>max
  27.          then
  28.           begin
  29.             max:=a[i];
  30.             imax:=i
  31.           end;
  32.       imin:=n; min:=a[n];
  33.        for i:=(n-1) downto 1 do
  34.         if a[i]<min
  35.          then
  36.           begin
  37.             min:=a[i];
  38.             imin:=i;
  39.           end;
  40.       k:=a[imin];
  41.        a[imin]:=a[imax];
  42.         a[imax]:=k;
  43.       Writeln('Konecniy massiv:');
  44.        Writeln;
  45.         for i:=1 to n do
  46.          Write(a[i]:5:1);
  47.           Writeln;
  48.            Writeln;
  49.       if imax>imin
  50.        then Writeln(imin,' i ',imax,' elementi menjajutcja mestami')
  51.        else Writeln(imax,' i ',imin,' elementi menjajutcja mestami');
  52.      ReadKey;
  53. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы