Консультация № 124516
23.02.2008, 20:11
0.00 руб.
0 3 3
Дан одномерный массив.Переставить местами максимальный и минимальный элемент

Обсуждение

Неизвестный
23.02.2008, 20:17
общий
это ответ
Здравствуйте, Юрченко Евгений Сергеевич!
Программа в приложении.

Удачи!

Приложение:
const N = 10;var M : array[1..N] of integer;function findMin:integer;var i, min : integer;begin min := 1; for i := 2 to N do if M[i] < M[min] then min := i; findmin := min;end;function findMax:integer;var i, max : integer;begin max := 1; for i := 2 to N do if M[i] > M[max] then max := i; findmax := max;end;procedure change(var a,b:integer);var t : integer;begin t := a; a := b; b := t;end;var i : integer;begin randomize; for i := 1 to N do begin M[i] := random(100); WriteLn(M[i]); end; WriteLn; Change(M[findmin],M[findmax]); for i := 1 to N do WriteLn(M[i]); ReadLn;end.
Неизвестный
23.02.2008, 21:00
общий
это ответ
Здравствуйте, Юрченко Евгений Сергеевич!
Вот вам программа

Приложение:
Constn=5;varM:array[1..n] of byte;Min,Max,I:byte;Buf:byte;beginrandomize;For i:=1 to n dom[i]:=random(255);(*Заполняем случайными числами массив*)Min:=1;Max:=1;(*Поиск номера максимального и минимального елемента*)for i:=1 to n dobeginif m[Min]>m[i] then(*Поиск номера минимального елемента*)min:=i;If m[max]<m[i] then(*Поиск номера максимального елемента*)Max:=i;end;Buf:=m[min]; (*замена макс. и мин. елементов *)m[min]:=m[max];m[max]:=buf;end.
Неизвестный
26.02.2008, 19:44
общий
это ответ
Здравствуйте, Юрченко Евгений Сергеевич!
Исходник в приложении. Протестирован. Работает на целочисленных массивах длиной до 15 чисел. Длину можно задавать через константу Nmax. Организован запрос на повторное исполнение. Выводятся значения максимального и минимального элементов вместе с номерами их позиций, а также трансформированный массив с заданной перестановкой.

Приложение:
program q124516;uses crt;const Nmax=15;var mas:array[1..Nmax] of integer; N,i,min,max,n1,n2:integer; ch:char;begin repeat clrscr; writeln; write(‘ Enter the length of you array : N = ‘); readln(N); if N>Nmax then writeln(‘ Input error : the length of set array must be <= ‘,Nmax) else begin writeln(‘ Input your array"s elements :‘); for i:=1 to N do begin write(‘ mas[‘,i,‘] = ‘); readln(mas[i]); end; min:=mas[1]; n1:=1; for i:=2 to N do if min>mas[i] then begin min:=mas[i]; n1:=i; end; max:=mas[1]; n2:=1; for i:=2 to N do if max<mas[i] then begin max:=mas[i]; n2:=i; end; mas[n1]:=max; mas[n2]:=min; writeln(‘ The minimum element was min = ‘,min,‘; under position number n1 = ‘,n1); writeln(‘ The maximum element was max = ‘,max,‘; under position number n2 = ‘,n2); writeln(‘ The transmission array is :‘); for i:=1 to N do writeln(‘ ‘,mas[i]); end; write(‘ Again (y/n) ? - ‘); ch:=readkey; until ch=‘n‘;end.
Форма ответа