TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

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

Пример 5.2. Дана целочисленная матрица A(N, N). Определить, имеются ли среди её элементов, лежащих ниже главной диагонали, отрицательные числа.  
Система тестов
 
Номер  теста Проверяемый  случай Данные Результат
N Массив А Otvet
1 Имеются 4  1 -1  2  1  2  3  1  0  1 -1  2 -1 -2  1  0  1  ''Есть отрицательные числа''
2 Не имеются 3 1 -1  2 1  0  1 2  1  1 ''Нет отрицательных чисел''
 
Демонстрация
Школьный АЯ 
алг Ниже диагонали (арг цел N, арг цел таб
                   A[1:N, 1:N], рез лит Otvet) 
нач цел i, j, лит Flag 
  Flag:="Нет"; i:=2 
  нц пока (i< =N) и (Flag="Нет") | цикл по строкам
    j:=1 
    нц пока (j<i) и (Flag="Нет")
              | цикл по элементам строки 
      если A[i, j]<0 | условие прерывания циклов
         то Flag:="Да" 
         иначе  j:=j+1 | продвижение по строке 
      все
    кц
    i:=i+1 | переход на новую строку 
  кц 
 если Flag="Да"
  то Otvet:="Есть отрицательные ниже диагонали" 
  иначе Otvet:="Нет отрицательных ниже диагонали"
 все
кон 
Блок-схема (фрагмент) 
Исполнение алгоритма
 
Обозначения проверяемых условий:
(i <= N) и (Flag = "Нет")  => (1)
(j < i) и (Flag = "Нет")   => (2)
N теста i Flag (1) j (2) A[i]=A[j] Otvet
 1 2  "Нет" + 1 2 + -(кц) -  
3 "Да" + 1 2 3 + + -(кц) - +  
4    -(кц)       "Есть отрицательные"
2 2  "Нет" + 1 2 +  -(кц) -  
3   + 1 2 3 + + -(кц) - -  
4   -(кц)       "Нет отрицательных"
 
Turbo Pascal
Program UnderDiagonal; 
  Uses Crt; 
  Type Mas = Array [1..10, 1..10] of Integer; 
  Var A       : Mas; 
      N, i, j : Integer; 
      Flag    : Boolean; 
{-----------------------------------} 
Procedure InputOutput(Var A : Mas);  {описание процедуры } 
 Begin                               {ввода-вывода данных} 
  ClrScr; 
  Write('Количество строк и столбцов - '); ReadLn(N); 
  For i := 1 to N do 
    For j := 1 to N do 
      begin Write('A[' , i , ', ' , j , ']= ? '); 
            ReadLn(A[i, j]) 
      end; WriteLn;
  WriteLn('Матрица :'); 
  For i := 1 to N do 
   begin 
     For j := 1 to N do Write(A[i, j] : 5); 
     WriteLn 
   end; WriteLn 
End; { of InputOutput } 
{------------------------------------} 
Procedure Solution(Var A : Mas); {описание процедуры поиска решения} 
 Begin 
  i := 2 ; Flag := FALSE;
  While (i<=N) and not Flag do 
    begin 
      j:=1; 
      While (j<i) and not Flag do 
        If (A[i, j]<0) 
          then Flag:=TRUE 
          else j:=j+1; 
      i:=i+1 
    end; 
End; { of Solution } 
{--------------------------------------------} 
Procedure OutResult; 
Begin 
  WriteLn('О т в е т :'); 
  Write('Среди элементов, лежащих ниже главной диагонали, '); 
  If Flag then WriteLn('есть отрицательные.') 
          else WriteLn('нет отрицательных.'); 
  ReadLn 
End; { of OutResult } 
{--------------------------------------------} 
BEGIN 
  InputOutput(A); {вызов процедуры ввода-вывода данных } 
  Solution(A); {вызов процедуры поиска решения задачи} 
  OutResult {вызов процедуры вывода результата } 
END.
 

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

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

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

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

Hosted by uCoz