|
Writeln ('Min even = ',m1);
Writeln ('Min odd = ',m2);
Writeln ('Min even = ',MinEven(mas,N));
Writeln ('Min odd = ',MinOdd(mas,N));
Readln;
End.
Величины минимального и следующего по величине элементов массива.
Program arr3;
Uses Crt;
(*$DEFINE DEBUG*) {для отладки программы сотрите (* *),
Тогда можно не тратить время на ввод массива, DEBUG
может быть заменено любым другим идентификатором}
type Data = integer; {В этом месте мы можем изменить тип для всей программы}
const N =6;
{в режиме отладки не надо вводить массив: он уже есть}
mas: array [0..N-1] of Data =(14,17,12,19,15,13);
procedure MinMin(var mas:array of Data; count:integer;var min1,min2: Data);
var j,nmin:integer;
tmp: Data;
Begin
(* поиск минимального элемента*)
min1:= mas[0]; tmp:=min1;
for j:= 1 to count-1 do
if mas[j] < min1 then begin
min1:= mas[j];nmin:=j;
End;
(* поместить минимальный в начало массива *)
mas[0]:= min1; mas[nmin]:=tmp;
(* поиск следующего по величине элемента *)
min2:=mas[1];
for j:= 2 to count-1 do
if mas[j] < min2 then min2:= mas[j];
(* восстановить начальный массив *)
mas[nmin]:=min1;mas[0]:=tmp;
End;
(******************************************************)
procedure PrnAr(var mas:array of Data; count:integer;n:Byte);
var j: integer;
Begin
(*печать обработанного массива по n в строке*)
for j:= 0 to count-1 do begin
if j mod n=0 then writeln;
write(mas[j],' ')
End;
End;
(******************************************************)
function Min_1(var mas:array of Data; count:integer): Data;
var j:integer; min1: Data;
Begin
(* поиск минимального элемента*)
min1:= mas[0];
for j:= 1 to count-1 do if mas[j] < min1 then min1:= mas[j];
Min_1:=min1
End;
(******************************************************)
function Min_2(var mas:array of Data; count:integer): Data;
var j,nmin:integer;
min1,min2,tmp: Data;
Begin
(* поиск минимального элемента*)
min1:= mas[0]; tmp:=min1;
for j:= 1 to count-1 do
if mas[j] < min1 then begin
min1:= mas[j];nmin:=j;
End;
(* поместить минимальный в начало массива *)
mas[0]:= min1; mas[nmin]:=tmp;
(* поиск следующего по величине элемента *)
min2:=mas[1];
for j:= 2 to count-1 do
if mas[j] < min2 then min2:= mas[j];
(* восстановить начальный массив *)
mas[nmin]:=min1;mas[0]:=tmp;
Min_2:=min2
End;
(******************************************************)
var j:integer; m1,m2:Data;
Begin
textattr:=30;ClrScr;
{$IFNDEF DEBUG} (* УСЛОВНАЯ КОМПИЛЯЦИЯ *)
(* если не определен DEBUG -отладка, то ввод массива
если определен DEBUG - отладка, то массив уже задан *)
for j:=low(mas) to high(mas) do begin
write (' mas[',j,'] = ');
readln (mas[j]);
End;
{$ENDIF} (* КОНЕЦ БЛОКА УСЛОВНОЙ КОМПИЛЯЦИИ *)
Дата добавления: 2015-07-11; просмотров: 59 | Нарушение авторских прав