Обработка массивов
Двумерные массивы
Алгоритмы нахождения наибольшего и наименьшего элементов двумерного массива
Задача 1. В соревнованиях по плаванию принимали участие 5 спортсменов. Соревнования состояли из 3 заплывов. Результаты заплывов записали в таблицу размерностью 3х5. Получить одномерный массив размером 3, элементами которого будут лучшие результаты в каждом из заплывов.
USES Crt;
VAR
RZ:ARRAY[0..3,0..5] OF INTEGER; LR:ARRAY[0..3] OF INTEGER;
I,J:BYTE;
BEGIN
ClrScr; WriteLn;
{ Заполнение таблицы }
FOR I:=1 TO 3 DO Begin
WriteLn(' Введите результаты ',I,' заплыва');
FOR J:=1 TO 5 DO Begin
Write(J,' участник - '); ReadLn(RZ[I,J]);
End;
End; WriteLn;
{ Определение лучшего результата в каждом из заплывов }
FOR I:=1 TO 3 DO Begin
LR[I]:=RZ[I,1];
FOR J:=2 TO 5 DO
IF RZ[I,J]<LR[I] THEN LR[I]:=RZ[I,J];
WriteLn(' Лучший результат ',I,' заплыва = ',LR[I]);
End;
END.
Задача 2. Дан двумерный массив размерностью 5х6, заполненный целыми числами. Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца.
USES Crt;
VAR
M:ARRAY[0..5,0..6] OF INTEGER; MAX:ARRAY[0..6] OF INTEGER;
I,J:BYTE;
BEGIN
ClrScr; Randomize;
{ Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы }
WriteLn(' Значения элементов двумерного массива');
FOR I:=1 TO 5 DO Begin
FOR J:=1 TO 6 DO Begin
M[I,J]:=Random(20)-8; Write(M[I,J]:3);
End; WriteLn;
End; WriteLn;
{ Формирование одномерного массива}
WriteLn(' Значения элементов одномерного массива');
FOR J:=1 TO 6 DO Begin
MAX[J]:=ABS(M[1,J]);
FOR I:=2 TO 5 DO
IF ABS(M[I,J]) > MAX[J] THEN MAX[J]:=ABS(M[I,J]);
Write(MAX[J]:3);
End;
END.
Задача 3. Дан двумерный массив размерностью NхM, заполненный случайным образом. Определить, есть ли в данном массиве строка, в которой имеется два элемента массива, имеющие наибольшее значение.
USES Crt;
CONST N=6; M=8;
VAR
A:ARRAY[0..N,0..M] OF INTEGER;
I,J,K,FL:BYTE; MAX:INTEGER;
BEGIN
ClrScr; Randomize;
{ Заполнение двумерного массива случайным образом и вывод в виде прямоугольной матрицы }
WriteLn(' Значения элементов двумерного массива');
FOR I:=1 TO N DO Begin
FOR J:=1 TO M DO Begin
A[I,J]:=Random(20); Write(A[I,J]:3);
End; WriteLn;
End; WriteLn;
{ Нахождение наибольшего значения }
MAX:=A[1,1];
FOR I:=1 TO N DO
FOR J:=1 TO M DO
IF A[I,J]>MAX THEN MAX:=A[I,J];
WriteLn(' Максимальное значение = ',MAX);
{ Нахождение строки, в которой два элемента имеют наибольшее значение }
FL:=0;
FOR I:=1 TO N DO Begin
K:=0;
FOR J:=1 TO M DO
IF A[I,J]=MAX THEN Inc(K);
IF K=2 THEN Begin WriteLn('В ',I,' строке два элемента имеют наибольшее значение');
FL:=1;
End;
End;
IF FL=0 THEN WriteLn(' Нет строк, в которых два элемента имеют наибольшее значение');
END.
.....................................................................................................................................
Практические задания
.....................................................................................................................................
- Дан двумерный массив размерностью 5x7, заполненный случайным образом. Найти наименьший и наибольший элементы двумерного массива, поменять их местами.
- Дан двумерный массив размерностью NxM, заполненный случайным образом. Получить одномерный массив, элементами которого являются сумма наименьшего и наибольшего элементов соответственной строки двумерного массива.