Пример 6.2. Дана целочисленная матрица A(N, M). Определить, встречается ли заданное целое K среди максимальных элементов столбцов этой матрицы.

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

Номер теста Проверяемый случай Данные Результат
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)

N теста Flag j (1) Jmax I A[i,j]>Jmax K=Jmax
1 "Нет" 1 + 1
4
2
3
+
-
-
"Да" 2 +
-(кц)
5 2
3
-
-
+
2 "Нет" 1
2

3
+
+

-(кц)
2
1

2
2
2
-
+
-
-

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.


QBasic

CLS : INPUT "Введите целое K = ", K 
PRINT "Введите целочисленную матрицу А" 
INPUT "Количество строк - ", N 
INPUT "Количество столбцов - ", M 
DIM A(N, M) 
FOR i = 1 TO N 
  FOR j = 1 TO M 
    PRINT "A(" ; i ; ", " ; j ; ") = " ; 
    INPUT A(i, j) 
  NEXT j 
NEXT i : CLS 
PRINT "Исходная матрица " 
FOR i = 1 TO N 
  FOR j = 1 TO M 
    PRINT A(i, j); 
  NEXT j : PRINT 
NEXT i : PRINT

Flag = 0 : j = 1 
WHILE (j <= M) AND (Flag = 0) 'цикл по столбцам с прерыванием 
  JMax = A(1, j) 
  FOR i = 2 TO N 'цикл нахождения JMax 
    IF A(i, j) > JMax THEN JMax = A(i, j) 
  NEXT i 
  IF K = JMax THEN Flag = 1 ELSE j = j + 1 'условие прерывания 
WEND 
PRINT "О т в е т : число"; K; 
IF Flag = 1 THEN 
    PRINT "встречается"; 
  ELSE PRINT "не встречается"; 
END IF 
PRINT " среди максимальных элементов столбцов матрицы" 
END

Другие записи

10.06.2016. Пример 6.3. Проверить, является ли заданная целочисленная матрица A(N, N) "магическим квадратом" (это значит, что суммы чисел во всех её строках, всех столбцах и двух диагоналях одинаковы).
Система тестов Номер теста Проверяемый случай Данные Результат N Матрица А Otvet 1 Является 3 ''Магический квадрат'' 2 Не является 2 ''Не магический квадрат '' Демонстрация…
10.06.2016. Пример 6.4. Дана матрица A(N, N). Если хотя бы один элемент строки матрицы отрицателен, то все элементы этой строки заменить нулями.
Тест Данные Результат N Матрица А Матрица А 3   Школьный АЯ (в этом алгоритме отражены процессы  ввода  исходных данных и вывода результатов ) алг Модификация(арг…