В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы - Turbo Pascal
Формулировка задачи:
В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы.
Вывести на печать исходный и полученный массивы.
Листинг программы
- {Программа для замены всех максимальных элементов на минимальные и наоборот}
- program terrabyte;
- uses crt, printer;
- var
- a: array [1..50] of integer; {исходный массив}
- c: array [1..50] of integer; {массив для индексов минимальных элементов}
- b: array [1..50] of integer; {массив для индексов максимальных элементов}
- n: integer; {количество элементов исходного массива}
- i: integer; {индекс элемента исходного массива}
- k: integer; {индекс массива с}
- j: integer; {индекс массива b}
- max: integer; {максимальный элемент исходного массива}
- min: integer; {минимальный элемент исходного массива}
- begin
- clrscr;
- writeln('Программа предназначена для замены всех максимальных элементов на минимальные и наоборот');
- {ввод количества ячеек}
- repeat
- writeln('введите количество элементов массива');
- readln(n);
- if (n>50) or (n<1) then
- writeln('ошибка');
- until (n>=1) and (n<=50);
- for i:=1 to n do
- begin
- writeln('введите элемент массива');
- readln(a[i]);
- end;
- writeln(' ');
- writeln('исходный массив');
- writeln(lst, 'исходный массив');
- for i:=1 to n do
- write(a[i], ' ');
- write(lst, a[i], ' ');
- writeln;
- {нахождение максимального элемента}
- max:=a[1];
- for i:=2 to n do
- if max<=a[i] then
- begin
- max:=a[i];
- b[j]:=i; {создание массива для индексов максимальных элементов}
- j:=j+1;
- end;
- {нахождение минимальных элементов}
- min:=a[1];
- k:=1;
- for i:=1 to n do
- if min>=a[i] then
- begin
- min:=a[i];
- c[k]:=i; {создание массива для индексов минимальных элементов}
- k:=k+1;
- end;
- for i:=1 to (j-1) do {замена максимальных элементов на минимальные}
- a[b[i]]:=min;
- for i:=1 to (k-1) do {замена минимальных элементов на максимальные}
- a[c[i]]:=max;
- if max=min then {проверка условия}
- begin
- writeln('макс. и мин. элементы равны');
- writeln(lst, 'макс. и мин. элементы равны');
- halt
- end;
- writeln('полученный массив');
- writeln(lst, 'полученный массив');
- for i:=i to n do
- write(a[i], ' ');
- write(lst, a[i], ' ');
- end.
Решение задачи: «В одномерном массиве поменять местами максимальный (MAX) и минимальный (MIN) элементы»
textual
Листинг программы
- program ProjectMassivMaxMin;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- const
- nm = 100;
- var
- A: array[1..nm] of real;
- buf: real;
- i, n, imin, imax: integer;
- begin
- imax := 1; imin := 1;
- WriteLn('Введите количество элементов ');
- ReadLn(n);
- WriteLn('Введите элементы массива ');
- for i := 1 to n do
- ReadLn(A[i]);
- WriteLn('Массив А ');
- for I := 1 to n do
- begin
- Write(A[i]:6:3,' ':3);
- if A[imin]<A[i] then imax := i
- else if A[imax]<A[i] then imin := i;
- end;
- WriteLn;
- WriteLn('максимальный элемент = ',A[imax]:5:3);
- WriteLn('минимальный элемент = ',A[imin]:5:3);
- buf := A[imin];
- A[imin] := A[imax];
- A[imax] := buf;
- WriteLn('Преобразованный массив ');
- for i := 1 to n do
- Write(A[i]:5:3,' ');
- ReadLn;
- end.
Объяснение кода листинга программы
- Создается программа ProjectMassivMaxMin.
- Используются стандартные библиотеки Turbo Pascal.
- Объявляются переменные: nm (100), A (массив real), buf (реальная переменная), i, n, imin, imax (целые числа).
- Запрашивается количество элементов массива и считывается.
- Запрашивается и считывается каждый элемент массива.
- Вычисляются минимальный и максимальный элементы массива.
- Если текущий элемент меньше минимального, то обновляется значение максимального элемента. Если текущий элемент больше максимального, то обновляется значение минимального элемента.
- Считывается и записывается преобразованный массив.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д