TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]


Пример 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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz