Задача Двумерные массивы

Дана матрица NхМ, состоящая из натуральных чисел. Найти в ней наименьший элемент и опреде­лить его местоположение. Если таких элементов несколько, то вывести на экран положение каж­дого из них.

Эту задачу можно решить несколькими способами. Например, пользуясь тем, что к элементам массива осуществляется параллельный доступ и возможен многократный просмотр, можно организовать два просмотра матрицы. За один просмотр находим минимальный элемент, и если таких элементов несколько, то за второй просмотр определяем их местоположение.

PROGRAM PG5_1;

CONST

T = 100;

S = 100;

VAR A : ARRAY[1..T, 1..S] OF INTEGER;

N, M, IM, JM, I, J, MIN, К : INTEGER;

BEGIN

WRITE('BBEДИTE КОЛИЧЕСТВО СТРОК N = ');

READLN(N);

WRITE('BBEДИTE КОЛИЧЕСТВО СТОЛБЦОВ М = ');

READLN(M);

FOR I := 1 TO N DO BEGIN

WRITELN('BBЕДИTE ЧЕРЕЗ ПРОБЕЛ ', M, ' ЧИСЕЛ');

FOR J := 1 ТО М DO

READ(A[I, J])

END;

MIN :=A[1, 1];

IM := 1;

JM := 1;

K := 0;

FOR I := 1 TO N DO

FOR J := 1 TO M DO

IF MIN>A[I, J] THEN

BEGIN

K:= 1;

IM:=I;

JM:=J;

MIN := A[l, J]

END

ELSE

IF MIN = A[l, J] THEN

К := K+1;

IF К = 1 THEN

BEGIN

WRITELN('B МАТРИЦЕ ОДИН МИНИМАЛЬНЫЙ ЭЛЕМЕНТ MIN =', MIN);

WRITELN('B ', IM, 'СТРОКЕ, В ', JM, ' СТОЛБЦЕ')

END

ELSE

BEGIN

WRITELN('B МАТРИЦЕ ', К, 'МИНИМАЛЬНЫХ ЭЛЕМЕНТОВ MIN = ', MIN);

FOR I := IM TO N DO

FOR J := 1 TO M DO

IF MIN = A[l, J] THEN

WRITELN('B СТРОКЕ ', I, ' В СТОЛБЦЕ ', J)

END

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим размеры массива А и значения его элементов;

- просматриваем элементы массива, ищем минимальное значение и запоминаем значение индексов;

- считаем количество минимальных элементов;

- в зависимости от К либо выводим информацию о единственном минимальном элементе, либо организуем повторный просмотр массива А для вывода информации о всех минимальных элементах.

Переменные:

А - двумерный массив;

N, М - количество строк и столбцов массива;

I, J - переменные цикла;

К - количество минимальных элементов;

IM, JM - строка и столбец минимального элемента;

MIN - текущий минимум.
 

Второй способ решения:

Дана матрица NхМ, состоящая из натуральных чисел. Найти в ней наименьший элемент и опреде­лить его местоположение. Если таких элементов несколько, то вывести на экран положение каж­дого из них.

Задачу можно решить за один просмотр матрицы. Но в этом случае необходимо ввести вспомогательный двумерный массив, в который заносятся значения строк и столбцов минимальных элементов.

PROGRAM PG5_1A;

CONST T= 100;

S = 100;

VAR A : ARRAY[1..T, 1..S] OF INTEGER;

В : ARRAY[1..T*S, 1..2] OF INTEGER;

N, M, IM, JM, I, J, MIN, К : INTEGER;

BEGIN

WRITE('BBEДИTE КОЛИЧЕСТВО СТРОК N = ');

READLN(N);

WRITE('BBEДИTE КОЛИЧЕСТВО СТОЛБЦОВ М = ');

READLN(M);

FOR I := 1 TO N DO

BEGIN

WRITELN('BBЕДИТE ', M, ' ЧИСЕЛ');

FOR J := 1 TO M DO

READ(A[I, J])

END;

MIN := A[1, 1];

К := 0;

FOR I := 1 TO N DO

FOR J := 1 TO M DO

IF MIN>A[I, J] THEN

BEGIN

К := 1;

B[1, 1] := I;

B[1, 2] := J;

MIN := A[l, J]

END ELSE

IF MIN = A[l, J] THEN

BEGIN

K:=K+1;

B[K, 1] := I;

B[K, 2] := J

END;

IF К = 1 THEN BEGIN

WRITELN('EДИHHCTBEHHЫЙ МИНИМУМ MIN = ', MIN);

WRITELN('CTPOKA ', IM, ' СТОЛБЕЦ ', JM)

END ELSE

BEGIN

WRITELN('B МАТРИЦЕ', К, 'МИНИМУМОВ MIN =', MIN);

FOR I := 1 TO К DO

WRITELN('CTPOKA', B[l, 1], 'СТОЛБЕЦ', B[l, 2])

END

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим размеры массива А и значения его элементов;

- просматриваем элементы массива, ищем минимальное значение и запоминаем значение индексов в вспомогательном массиве В;

- считаем количество минимальных элементов;

- в зависимости от К либо выводим информацию о единственном минимальном элементе, либо организуем вывод информации о всех минимальных элементах из массива В.

Переменные:

А - двумерный массив;

В - вспомогательный массив;

N, М - количество строк и столбцов массива;

I, J - переменные цикла;

К - количество минимальных элементов;

IM, JM - строка и столбец минимального элемента;

MIN - текущий минимум.

 

Лекция добавлена 10.09.2013 в 10:28:41