Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачник по программированию.doc
Скачиваний:
25
Добавлен:
03.11.2018
Размер:
1.94 Mб
Скачать

Система тестов

Номер

Теста

Проверяемый

случай

Данные

Результат

K

N

M

Матрица А

Otvet

1

Встречается

5

3

3

''Встречается''

2

Не встречается

1

2

2

''Не встречается''

Алгоритмический язык

алг Да или Нет(арг цел N,M,K, арг цел таб A[1:N, 1:M], рез лит Otvet)

дано | N, M >0

нач цел i, j, JMax, лит Flag

Flag:="Нет"; j:=1

нц пока (j<=M) и (Flag="Нет") | цикл по столбцам с прерыванием

JMax:=A[1,j]

нц для i от 2 до N | цикл нахождения JMax

если A[i,j]>JMax

то JMax:=A[i, j]

все

кц

если K=JMax | условие прерывания цикла

то Flag:="Да"

иначе j:=j+1

все

кц

если Flag="Да"

то Otvet := "Встречается"

иначе Otvet := "Не встречается"

все

кон

Исполнение алгоритма Блок-схема (фрагмент)

Обозначение проверяемого условия:

(j<=M) и (Flag = "Нет" ) => (1)

Turbo Pascal

Program Checking;

Uses Crt;

Var A : Array[1..10, 1..10] of Integer;

N, M, i, j : Integer;

K : Integer; {заданное число}

JMax : Integer; {максимальный элемент столбца}

Flag : Boolean;

{---------------------------------------------------}

Procedure InputOutput; {описание процедуры ввода-вывода}

Begin ClrScr;

Write('Введите целое K = '); ReadLn(K); WriteLn;

WriteLn('Введите целочисленную матрицу А');

Write('Количество строк - '); ReadLn(N);

Write('Количество столбцов - '); ReadLn(M);

For i := 1 to N do

For j := 1 to M do

begin Write('A[' , i , ', ' , j , '] = ');

ReadLn(A[i, j]);

end; ClrScr;

WriteLn('Исходная матрица :'); WriteLn;

For i := 1 to N do

begin

For j := 1 to M do Write(A[i, j] : 4);

WriteLn;

end; WriteLn;

End; { of InputOutput }

{--------------------------------------------}

Procedure YesOrNot(Var Flag:Boolean); {описание процедуры решения задачи}

Begin

Flag:=FALSE; j:=1;

While (j<=M) and not Flag do {цикл по столбцам с прерыванием}

begin JMax:=A[1, j];

For i := 2 to N do {цикл нахождения JMax}

If A[i, j]>JMax then JMax:=A[i, j];

If K=JMax then Flag:=TRUE else j:=j+1; {условие прерывания}

end;

End;

{--------------------------------------------}

BEGIN

InputOutput; {вызов процедуры ввода-вывода исходных данных}

YesOrNot(Flag); {вызов процедуры решения задачи}

Write('О т в е т : число ', K );

If Flag then Write(' встречается')

else Write(' не встречается');

WriteLn(' среди максимальных элементов столбцов матрицы');

ReadLn;

END.

Пример 6.3. Проверить, является ли заданная целочисленная матрица A(N, N)

"магическим квадратом" (это значит, что суммы чисел во всех её строках, всех

столбцах и двух диагоналях одинаковы).