Фрагменты программ по обработке 2-х мерных массивов

Определение наименьшего элемента каждой строки матрицы:

FOR I := 1 TO 5 DO

BEGIN

MIN := A[I,1];

FOR J := 2 TO 5 DO

IF A[I,J] < MIN THEN MIN := A[I,J];

C[I] := MIN;

END;

FOR I := 1 TO 5 DO WRITELN (‘В ’,I, ‘ строке наименьший элемент равен ’, C[I]:2);

Определение наибольшего элемента каждого столбца матрицы:

FOR J := 1 TO 5 DO

BEGIN

MAX := A[1,J];

FOR I := 2 TO 5 DO

IF A[I,J] > MAX THEN MAX := A[I,J];

Z[I] := MAX;

END;

FOR J := 1 TO 5 DO WRITELN (‘В ’,J, ‘ строке наименьший элемент равен ’, Z[J]:2);

Сумма элементов побочной диагонали:

S := 0;

J := 5;

FOR I := 1 TO 5 DO

BEGIN

S := S + A[I,J];

J := J–1; {или DEC(J);}

END;

Вывод элементов главной диагонали:

WRITELN (‘Элементы главной диагонали: ’);

FOR I := 1 TO 5 DO

BEGIN

FOR J := 1 TO 5 DO

IF I = J THEN WRITE (A[I,J]:3,’’:2);

WRITELN;

END;

Вывод элементов побочной диагонали:

WRITELN (‘Элементы побочной диагонали: ’);

J := 1;

FOR I := 1 TO 5 DO

BEGIN

B[J] := A[I, 5+1-i];

INC (J);

END;

FOR J := 1 TO 5 DO WRITELN (B[J]:3); …

Элементы побочной диагонали расположить по возрастанию:

FOR K := 1 TO 5-1 DO

FOR J := K +1 TO 5 DO

BEGIN

IF B[K] > B[J] THEN

BEGIN

M := B[K];

B[K] := B[J];

B[J] := M;

END;

END;

WRITELN (‘Элементы побочной диагонали, расположенные по возрастанию: ’);

FOR J :=1 TO 5 DO WRITELN (B[J]:3);

Задача 7.5. Сформировать квадратную матрицу размерностью 5´5. Вывести матрицу в общем виде и посчитать сумму элементов, расположенных на главной диагонали.

Блок-схема алгоритма:

 
 

Листинг программы

PROGRAM TASK1;

USES CRT;

VAR

A : ARRAY [1..5, 1..5] OF INTEGER;

I, J, S : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

{формирование матрицы случайным образом}

FOR I := 1 TO 5 DO

FOR J :=1 TO 5 DO

A[I,J] := RANDOM (51);

{вывод элементов матрицы. на экран}

FOR I := 1 TO 5 DO

BEGIN

FOR J :=1 TO 5 DO

WRITELN (A[I,J]);

WRITELN;

END;

{вычисление суммы элементов,

расположенных на главной диагонали}

S := 0;

FOR I := 1 TO 5 DO

FOR J :=1 TO 5 DO

IF I = J THEN

S := S + A [I, J];

WRITELN (‘’, S:4);

END.

Задача 7.6. Дана квадратная матрица. Определить количество отрицательных элементов каждой строки матрицы.

Блок-схема алгоритма:

Листинг программы:

PROGRAM TASK2;

USES CRT;

CONST L=5;

VAR

A : ARRAY[1..L, 1..L] OF INTEGER;

I, J, K : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

{формирование матрицы случайным образом}

FOR I := 1 TO L DO

FOR J :=1 TO L DO

A[I,J] := RANDOM (51);

{вывод элементов матрицы. на экран}

FOR I := 1 TO L DO

BEGIN

FOR J :=1 TO L DO

WRITELN (A[I,J]);

WRITELN;

END;

FOR I:=1 TO L DO

BEGIN

K:=0;

FOR J:=1 TO L DO

IF A[I, J] <0 THEN K := K+1;

WRITELN (‘Количество элементов <0 в ‘, I, ‘строке равно ‘, K);

END;

READLN;

END.

Задача 7.7. Вычислить сумму положительных элементов каждого столбца матрицы (см. Задача 2).

 
 

Блок-схема алгоритма:

Листинг программы:

PROGRAM TASK2;

USES CRT;

CONST L=5;

VAR

A : ARRAY[1..L, 1..L] OF INTEGER;

I, J, S : INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

{формирование матрицы случайным образом}

FOR I := 1 TO L DO

FOR J :=1 TO L DO

A[I,J] := RANDOM (51);

{вывод элементов матрицы на экран}

FOR I := 1 TO L DO

BEGIN

FOR J :=1 TO L DO

WRITELN (A[I,J]);

WRITELN;

END;

FOR J:=1 TO L DO

BEGIN

S:=0;

FOR I:=1 TO L DO

IF A[I, J] >0 THEN S := S+A[I,J];

WRITELN (‘Сумма элементов >0 в ‘, J, ‘столбце равна ‘, S);

END;

READLN;

END.

Задача 7.8. Вычислить сумму элементов каждой строки матрицы A, определить наименьшее значение этих сумм и номер соответствующей строки нового сформированного массива B.

 
 

Блок-схема алгоритма:

Листинг программы:

PROGRAM TASK2;

USES CRT;

CONST L=5;

VAR

B : ARRAY[1..L] OF INTEGER;

A : ARRAY[1..L, 1..L] OF INTEGER;

I, J, MIN, INDEX: INTEGER;

BEGIN

CLRSCR;

RANDOMIZE;

{формирование матрицы случайным образом}

FOR I := 1 TO L DO

FOR J :=1 TO L DO

A[I,J] := RANDOM (51);

{вывод элементов матрицы на экран}

FOR I := 1 TO L DO

BEGIN

FOR J :=1 TO L DO

WRITELN (A[I,J]);

WRITELN;

END;

FOR I:=1 TO L DO

BEGIN

B[I]:=0;

FOR J:=1 TO L DO B[I] := B[I]+A[I,J];

END;

FOR I:=1 TO L DO

WRITELN (‘Сумма элементов ‘, I, ‘строки равно ‘, B[I]);

MIN:= B[1];

INDEX := 1;

FOR I:=2 TO L DO

IF B[I] < MIN THEN

BEGIN

MIN := B[I];

INDEX := I;

END;

WRITELN (‘Наименьшее значение сумм каждой строки равно - ’, MIN);

WRITELN (‘Номер соответствующей строки равен - ’, INDEX);

READLN;

END.

Задача 7.9.Вычислить количество точек, попавших в круг с радиусом R, с центом в начале координат (0,0).

Блок-схема алгоритма:

Листинг программы

PROGRAM TASK;

USES CRT;

CONST

N=80;

TYPE

VECTOR=ARRAY[1..N] OF REAL;

VAR

X, Y, R1 : VECTOR;

I, K, KXR, KYR: INTEGER;

R: REAL;

BEGIN

CLRSCR;

RANDOMIZE;

WRITELN (‘Введите длину радиуса R’);

READLN (R);

KXR:= 0;

KYR:= 0;

FOR I:=1 TO N DO

BEGIN

X[I]:=RANDOM(11)/2;

Y[I]:=RANDOM(11)/2;

END;

FOR I:=1 TO N DO

WRITELN (X[I], Y[I]);

FOR I:=1 TO N DO

BEGIN

R[I]:=SQRT(SQR(X[I]-KXR)+SQR(Y[I]-KYR));

WRITELN(R[I]);

END;

K := 0;

FOR I:=1 TO N DO

IF R[I]<R THEN K:= K+1;

WRITELN(K);

READLN;

END.

Вопросы для самопроверки

1. Дайте определение матрицы?

2. Каков формат объявления матрицы в разделе Var (1 способ)?

3. Каков формат объявления матрицы в разделе Var, если создан новый тип матрицы в разделе Type (2 способ)?

4. Что необходимо знать, чтобы обратиться к определённому элементу матрицы?

5. Какого назначение 2-го способа объявления матрицы?

6. При каком условии элементы матрицы будут принадлежать главной диагонали?

7. При каком условии элементы матрицы будут принадлежать побочной диагонали?

8. При каком условии элементы матрицы будут находиться над главной диагональю?

9. При каком условии элементы матрицы будут находиться под главной диагональю?

Лабораторная работа №7_2

Наши рекомендации