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;
