Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб №4 (массивы).doc
Скачиваний:
1
Добавлен:
27.08.2019
Размер:
72.7 Кб
Скачать

37) Число тех элементов целочисленного массива ,которые

Не равны а1 и произведение остальных элементов.

38) Минимальные значения элементов массива с четными и нечетными индексами.

Примеры:

  1. Минимальные значения элементов массива с четными и нечетными индексами.

program arr2;

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 EvenOddMin(var mas:array of Data; count:integer;var min1,min2:Data );

Var j,lim:integer;

begin

if not Odd(count-1) then lim := count-1 else lim := count-2;

j:=0;min1:=mas[j];

while j <= lim do begin

if mas[j] < min1 then min1 := mas[j];

Inc(j,2); (* т.е. j:=j+2 *)

end;

if Odd(count-1) then lim := count-1 else lim := count-2;

j:=1;min2:=mas[j];

while j <= lim do begin

if mas[j] < min2 then min2 := mas[j];

Inc(j,2); (* т.е. j:=j+2 *)

end

end;

(*****************************************************)

function MinOdd(var mas:array of Data; count:integer): Data;

Var j,lim:integer;

min : Data;

begin

if Odd(count-1) then lim := count-1 else lim := count-2;

j:=1;min:=mas[j];

while j <= lim do begin

if mas[j] < min then min := mas[j];

Inc(j,2); (* т.е. j:=j+2 *)

end;

MinOdd:=min

end;

(******************************************************)

function MinEven(var mas:array of Data; count:integer): Data;

Var j,lim:integer;

min : Data;

begin

if not Odd(count-1) then lim := count-1 else lim := count-2;

j:=0;min:=mas[j];

while j <= lim do begin

if mas[j] < min then min := mas[j];

Inc(j,2); (* т.е. j:=j+2 *)

end;

MinEven:=min

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} (* КОНЕЦ БЛОКА УСЛОВНОЙ КОМПИЛЯЦИИ *)

EvenOddMin(mas,N,m1,m2);

Writeln ('Min even = ',m1);

Writeln ('Min odd = ',m2);

Writeln ('Min even = ',MinEven(mas,N));

Writeln ('Min odd = ',MinOdd(mas,N));

Readln;

end.

  1. Величины минимального и следующего по величине элементов массива.

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);