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

True False True False Рис. 9.7

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

Program Main;

Type Vect = array[1..20] of real;

Var A,B: Vect;

n1, n2, I: integer;

Proizv, MaxA, MaxB: real;

Function MaxEl(M: Vect; nm : integer): real;

Var I: integer;

Max: real;

Begin

Max:=M[1] ;

For I:=1 to n1 do

If (M[I]>Max) then

Max:=M[I];

MaxEl:=Max;

End;

Begin

Writeln('Input n1: ');

Readln(n1);

Writeln('Input ',n1, ' real numbers: ');

For I:=1 to n1 do readln(A[I]);

Writeln('Input n2: ');

Readln(n2);

Writeln('Input ',n2, ' real numbers: ');

For I:=1 to n2 do readln(B[I]);

MaxA:=MaxEl(A,n1);

MaxB:=MaxEl(B,n2);

Proizv:= MaxA*MaxB;

Writeln('MaxA = ', MaxA);

Writeln('MaxB = ', MaxB);

Writeln('MaxA*MaxB = ', Proizv);

Write('Press any key!!!');

Readln;

End.

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

Input n1:

5

Input 5 real numbers:

1.6

-5.8

2

7

1.45

Input n2:

3

Input 3 real numbers:

1.5

2

-8

MaxA = 7.00000000000000E+0000

MaxB = 2.00000000000000E+0000

MaxA*MaxB = 1.40000000000000E+0001

Press any key!!!

Аналогично можно передавать двумерные массивы в качестве параметра процедурам и функциям. Рассмотрим пример программы обработки матриц с использованием подпрограмм.

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

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

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

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

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

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

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

Метод решения:для определения числа положительных элементов в строке матрицы использовать функцию.

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

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

Блок-схема основной программы представлена на рис. 9.8.

Рис. 9.8

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

K[I]= количествоA[I,J], для которых справедливо неравенствоA[I,J]>0.

True False True False True False Рис 9.9

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

Program Main;

Type Tmatrix = array[1..10,1..10] of integer;

Vect = array[1..10] of integer;

Var

A: Tmatrix;

K: Vect;

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

Procedure PositiveEl(M:Tmatrix; n, m: integer; VAR K: Vect);

Var i, j: integer;

begin

for i:=1 to n do

begin

K[i]:=0;

for j:=1 to m do

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

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

end;

end;

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]);

PositiveEl(A, n, m, K);

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!