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

Пример 4.3. Определить, имеется ли среди элементов главной диагонали заданной целочисленной матрицы a(n, n) хотя бы один положительный нечётный элемент. Система тестов

 

 

Номер теста

Проверяемый случай

Данные

Результат

N

Матрица А

Текст

1

Имеется

3

"Есть такие"

2

Не имеется

2

"Нет таких"

 

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

Начало формы

Конец формы

Школьный АЯ

алг Диагональ (арг цел N, арг цел таб А[1:N, 1:N], рез лит Teкст)

нач цел i, лит Flag

  i:=1; Flag:="Нет"

  нц пока (i<=N) и (Flag="Нет")   | условие продолжения цикла

    если (A[i, i]>0) и (mod(A[i, i], 2)=1) | условие завершения цикла

      то Flag := "Да"

      иначе i:=i+1

    все

  кц 

  если Flag = "Да"

    то Текст := "Есть такие"

    иначе Текст := "Нет таких"

  все

кон

Исполнение алгоритма 

Обозначения проверяемых условий:   (i <= N) и (Flag = "Нет")  => (1)   (A[i, i] > 0) и (mod(A[i, i], 2) = 1)  => (2) 

N теста

i

Flag

(1)

(2)

Текст

1

1

2

"Нет"

"Да"

+

+

-(кц)

-

+

"Есть такие"

2

1

2

3

"Нет"

+

+

-(кц)

-

-

"Нет таких"

 

  Блок-схема (фрагмент) 

Turbo Pascal

Program Diagonal;

  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(’Количество строк и столбцов – ’); Read(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); {описание процедуры поиска решения}

  Var Flag : Boolean;

 Begin

   Flag:=FALSE; i:=1;

   While (i<=N) and not Flag do

     If (A[i, i]>0) and (A[i, i] mod 2 = 1)

        then Flag:=TRUE

        else i:=i+1;

   WriteLn(’О т в е т :’);

   Write(’Среди элементов главной диагонали ’);

If Flag then WriteLn (’есть нечетные положительные.’)

           else WriteLn(’нет нечетных положительных.’);

   ReadLn;

  End;     { of Solution }

{------------------------------------}

BEGIN