Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции(ЯВУ)-Паскаль.doc
Скачиваний:
63
Добавлен:
31.03.2015
Размер:
1.08 Mб
Скачать

8.4. Пример 4. Программа обработки двумерного массива

Задание 4. В двумерном массиве (матрице) определить номер строки, в которой находится максимальное количество положительных элементов. Если положительных элементов нет в массиве, вывести сообщение об этом.

Постановка задачи.

Исходные данные:

  • Число строк в матрице n<=10;

  • Число столбцов в матрице m<=10;

  • Двумерный массив (матрица) размером nxm, содержащий положительные и отрицательные значения.

Выходные данные:номер строки, в которой находится максимальное количество положительных элементов.

Аномалии:отсутствие положительных элементов в массиве.

Реакция на аномальную ситуацию – выдача сообщения.

Алгоритм.Подсчет числа положительных элементов в строках матрицы.

Исходные данные:

СКАЛЯР n<=10 - целое число;

СКАЛЯР m<=10 - целое число;

МАССИВ A[nxm] целого типа.

Выходные данные:

СКАЛЯР imax– целое число.

Промежуточные данные:

МАССИВ K[n] целого типа /* массив счетчиков количества положительных элементов в строках матрицы */

СКАЛЯР kmax– целое число /* максимальное количество положительных элементов */

СКАЛЯР i– целое число /* параметр цикла */

СКАЛЯР j– целое число /* параметр цикла */

Начало

Вывод(‘inputn<10’)

Ввод(n)

Вывод(‘inputm<10’)

Ввод(m)

ЦИКЛОТi:=1ДОn

ЦИКЛОТj:=1ДОm

Вывод(‘input A[i,j] ‘)

Ввод(A[i,j])

КОНЕЦ_ЦИКЛА

КОНЕЦ_ЦИКЛА

ЦИКЛ ОТi:=1ДОn

K[i]=0;

ЦИКЛ ОТj:=1ДОm

ЕСЛИ(A[i,j]>0) ТО

K[i]= K[i]+1

КОНЕЦ_ЕСЛИ

КОНЕЦ_ЦИКЛА

КОНЕЦ_ЦИКЛА

Kmax=K[1]

imax=1

ЦИКЛ ОТi:=1ДОn

ЕСЛИ (K[i]>Kmax)ТО

Kmax=K[i]

imax=i

КОНЕЦ_ЕСЛИ

КОНЕЦ_ЦИКЛА

ЕСЛИ (Kmax=0)ТО

Вывод(‘Not A[i,j]>0!’)

ИНАЧЕ

Вывод(‘imax= ‘,imax)

КОНЕЦ_ЕСЛИ

Конец

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

Рис. 8.4

Блок-схема алгоритма ввода матрицы M размером n x m.

False

True

False

True

J=J+1

I=I+1

Рис. 8.5

Блок-схема алгоритма подсчета количества положительных элементов в каждой строке матрицы и запись счетчиков в массив K из n элементов.

K[I]= количествоA[I,J], таких чтоA[I,J]>0.

True False True False False

True

Рис 8.6

Блок-схема алгоритма определения номера строки матрицы, содержащей максимальное количество положительных элементов .

True

False

False

True

Рис 8.7

Программа на языке Паскаль.

Program Nomer_Row;

Var

A: array[1..10,1..10] of integer;

K: array[1..10] of integer;

i, j, n, m, kmax, imax: integer;

begin

write('input n<10 ');

readln(n);

write('input m<10 ');

readln(m);

for i:=1 to n do

for j:=1 to n do

read(A[i,j]);

for i:=1 to n do

begin

K[i]:=0;

for j:=1 to m do

if (A[i,j]>0) then

K[i]:= K[i]+1;

end;

kmax:=K[1];

imax:=1;

for i:=1 to n do

if (K[i]>kmax) then

begin

kmax:=K[i];

imax:=i;

end;

if kmax=0 then

writeln('Not A[i][j]>0 !')

else

writeln('imax= ',imax);

write('PRESS ANY KEY!');

readln;

end.

Результаты тестирования.

1. Исходные данные:

n=3

m=3

A=((-1,-2,-3), (-1,0,-3), (-5,-2,-8)

Результат- сообщение «notA[i,j]>0».

Результаты, выданные программой.

input n<10 3

input m<10 3

-1 -2 -3

-1 0 -3

-5 -2 -8

Not A[i][j]>0 !

PRESS ANY KEY!

2. Исходные данные:

n=3

m=3

A=((1,2,3), (1,0,-3), (-5,-2,-8)

Результат- сообщение «imax=1».

Результаты, выданные программой.

input n<10 3

input m<10 3

1 2 3

1 0 -3

-5 -2 -8

imax= 1

PRESS ANY KEY!