Читайте также: |
|
При решение задач на обработку одномерных и двумерных массивов необходимо знать следующие типовые алгоритмы:
- описание, ввод, вывод массивов;
- поиск минимального и максимального значений;
- поиск суммы, произведения, количества элементов;
- поиск среднего геометрического и среднего арифметического.
Ниже приводятся перечисленные алгоритмы.
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ А(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;
Дата добавления: 2015-07-11; просмотров: 191 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ОПРЕДЕЛЕНИЯ | | | ОБРАБОТКА ДВУМЕРНЫХ МАССИВОВ В(N,M) |