Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика алгоритмизации и программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
517.53 Кб
Скачать

Демонстрация

Начало формы

Конец формы

Школьный АЯ 

алг Ниже диагонали (арг цел 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('Среди элементов, лежащих ниже главной диагонали, ');