Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МАССИВЫ (ШАБЛОНЫ АЛГОРИТМОВ).DOC
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
4.23 Mб
Скачать

2.1. Обработка одномерных массивов а(n)

Описание массива

CONST

N1 = 20; {МАКСИМАЛЬНЫЙ РАЗМЕР}

TYPE

MAS1 = ARRAY[1..N1] OF INTEGER;

VAR

A : MAS1;

N : INTEGER; {РЕАЛЬНЫЙ РАЗМЕР}

I : INTEGER; { ИНДЕКС}

Ввод массива

WRITELN(‘ВВЕДИТЕ РАЗМЕР N = ’);

READ(N);

FOR I:=1 TO N DO

BEGIN

WRITE(‘A[‘, I , ’]= ‘);

READ(A[I]);

END;

Вывод массива

FOR I:=1 TO N DO

WRITE(‘A[‘, I , ’]= ‘, A[I]);

Поиск суммы элементов S

S положительных элементов

S := 0;

FOR I:=1 TO N DO

IF A[I] > 0 THEN

S := S + A[I];

WRITELN(‘S= ‘,S);

S четных элементов

S := 0;

FOR I:=1 TO N DO

IF A[I] MOD 2 = 0 THEN

S := S + A[I];

WRITELN(‘S= ‘,S);

S нечетных элементов

S := 0;

FOR I:=1 TO N DO

IF A[I] MOD 2 <> 0 THEN

S := S + A[I];

WRITELN(‘S= ‘,S);

S элементов, стоящих на

четных местах

S := 0;

I := 2;

WHILE I <= N DO

BEGIN

S := S + A[I];

I := I+2;

END;

WRITELN(‘S= ‘,S);

S элементов, стоящих на

нечетных местах

S := 0;

I := 1;

WHILE I <= N DO

BEGIN

S := S + A[I];

I := I+2;

END;

WRITELN(‘S= ‘,S);

Поиск произведения элементов P

Можно использовать приемы программирования как и для S, только учитывать особенности алгоритма произведения.

Поиск Р элементов, попадающих в интервал от –2 до 9

P :=1;

FOR I:=1 TO N DO

IF (A[I] > -2) AND (A[I] < 9) THEN

P := P * A[I];

WRITELN(‘P= ‘, P);

Поиск количества элементов COL

Можно использовать приемы программирования как указано выше, только учитывать особенности алгоритма поиска количества

Найти количество отрицательных элементов, стоящих на нечетных местах

COL := 0;

I:=1;

WHILE I<= N DO

BEGIN

IF A[I] < 0 THEN

COL := COL + 1;

I:= I+2;

END;

WRITELN(‘COL= ‘,COL);

Поиск среднего арифметического положит. элементов SA = S/ COL

S:= O;

COL := 0;

FOR I:=1 TO N DO

IF A[I]> 0 THEN

BEGIN

S := S + A[I];

COL := COL +1;

END;

IF COL > 0 THEN

BEGIN

SA := S/COL;

WRITELN (‘ SA= ‘, SA);

END

ELSE

WRITELN(‘ COL = 0 ‘);

Поиск среднего геометрического отриц. элементов

P:= 1;

COL := 0;

FOR I:=1 TO N DO

IF A[I]< 0 THEN

BEGIN

P := P* A[I];

COL := COL +1;

END;

IF COL > 0 THEN

BEGIN

SG := EXP(1/COL * LN(P)) ;

WRITELN (‘ SG= ‘, SG);

END

ELSE WRITELN(‘ COL = 0 ‘);

Поиск минимального значения MIN

Среди всех элементов массива

MIN := A[1];

FOR I:=1 TO N DO

IF A[I] < MIN THEN

MIN := A[I];

WRITELN(‘MIN = ‘, MIN);

Среди полож.(отриц., четных, нечетных и т.д.) элементов массива

MIN := 10000;

FOR I:=1 TO N DO

IF (A[I]>0) AND (A[I] < MIN) THEN

MIN := A[I];

WRITELN(‘MIN = ‘, MIN);

Найти миним. и его индекс среди всех элементов массива

MIN := A[1];

IMIN := 1;

FOR I:=1 TO N DO

IF A[I] < MIN THEN

BEGIN

MIN := A[I];

IMIN := I;

END;

WRITELN(‘MIN = ‘, MIN);

Поиск максимального значения MAX

Среди всех элементов массива

MAX := A[1];

FOR I:=1 TO N DO

IF A[I] > MAX THEN

MAX := A[I];

WRITELN(‘MAX = ‘, MAX);

Среди полож.(отриц., четных, нечетных и т.д.) элементов массива

MAX := -10000;

FOR I:=1 TO N DO

IF (A[I]>0) AND (A[I] > MAX) THEN

MAX := A[I];

WRITELN(‘MAX = ‘, MAX);

Найти максимум и его индекс среди всех элементов массива

MAX := A[1];

IMAX := 1;

FOR I:=1 TO N DO

IF A[I] > MAX THEN

BEGIN

MAX := A[I];

IMAX := I;

END;

WRITELN(‘MAX = ‘, MAX);

Изменить порядок следования элементов в векторе (инверсия)

FOR I:=1 TO N DIV 2 DO

BEGIN

V := A[I];

A[I] := A[N+1-I];

A[N+1-I] : = V;

END;

Сортировка одномерного массива по возрастанию (метод «пузырька»)

REPEAT

FLAG:=0;

FOR I= 1 TO N –1 DO

IF A[I]>A[I+1] THEN

BEGIN

C := A[I];

A[I] := A[I+1];

A[I+1] := C;

FLAG := 1;

END;

UNTIL FLAG=0;

Сортировка одномерного массива по убыванию (метод линейного перебора)

FOR J= 1 TO N –1 DO

BEGIN

MAX := A[J];

IMAX := J;

FOR I= J+1 TO N DO

IF A[I]>MAX THEN

BEGIN

MAX := A[I];

IMAX := I;

END;

C := A[J];

A[J] := A[IMAX];

A[IMAX] := C;

END;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]