|
|
|
[ домой ] | [ следующий ] [ начало главы ] [ предыдущий ] | [ содержание ] |
Пример 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 := "Не встречается" все кон |
Блок-схема (фрагмент)
![]() |
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
[ домой ] | [ следующий ] [ начало главы ] [ предыдущий ] | [ содержание ] |
|