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

Пример 4.1. Определить, является ли заданная последовательность чисел a1 , a2 , ... , aN монотонно убывающей. Система тестов

 

 

Номер теста

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

Данные

Результат

N

Вектор А

Otvet

1

Является

3

(3, 2, 1)

'Да'

2

Не является

3

(2, 3, 1)

'Нет'

 

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

Начало формы

Конец формы

Школьный АЯ 

алг Убывание (арг цел N, арг вещ таб A[1:N],

              рез лит Otvet)

нач цел i

  i:=1; Otvet:="Да"

  нц пока (i<=N–1) и (Otvet="Да")

    если A[i] < A[i+1]

       то Otvet := "Нет"

       иначе i:=i+1

    все

  кц

кон

Исполнение алгоритма   Обозначения проверяемых условий:   (i <= N-1) и (Otvet = "Да") => (1)   A[i] < A[i+1] => (2)    

N теста

i

Otvet

(1)

(2)

1

1

2

3

"Да"

+

+

-(кц)

-

-

2

1

"Да"

"Нет"

+

-(кц)

+

 

  Блок-схема 

  (фрагмент) 

Turbo Pascal

Program Decrease;

  Uses Crt;

  Var A    : Array [1..10] of Real;

      N, i : Integer;

      Otvet: Boolean;

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

Procedure InputOutput; {описание процедуры ввода-вывода данных}

 Begin

  ClrScr; 

  Write(’Количество элементов - ’); ReadLn(N);

  For i := 1 to N do

   begin Write(’A[’ , i , ’] = ’);

         ReadLn(A[i])

   end; WriteLn;

 

  WriteLn(’Заданная последовательность чисел’);

  For i := 1 to N do Write(A[i] : 5 : 1); 

  WriteLn

 End; { of InputOutput }

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

Procedure Processing( Var Otvet: Boolean);

 Begin              {описание процедуры проверки на убывание элементов}

  Otvet := TRUE; i:=1;

  While (i<=N–1) and Otvet do

   If (A[i]<A[i+1]) then Otvet := FALSE

                    else i := i+1;

 End; { of Processing }

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

Procedure Result(Otvet: Boolean);  {описание процедуры вывода результата}

 Begin                   

If Otvet then Write(’образует ’)

           else Write(’не образует ’);

  WriteLn(’монотонно убывающую последовательность.’); 

  ReadLn

 End;

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

BEGIN

InputOutput; {вызов процедуры ввода-вывода}

  Processing(Otvet); {вызов процедуры проверки на убывание}

  Result(Otvet);     {вызов процедуры вывода результата}

END.

QBasic

CLS

Input "Количество элементов – ", n : dim a(n)

FOR i = 1 TO N

  PRINT "A(" ; i ; ") = " ;

  INPUT A(i)

NEXT i

CLS : PRINT "Заданная последовательность чисел"

FOR i = 1 TO N

  PRINT A(i) ;

NEXT i : PRINT

i = 1 : Otvet = 0

WHILE (i <= N–1) AND (Otvet = 0)

  IF A(i) < A(i + 1) THEN Otvet = 1 ELSE i = i + 1

WEND

IF Otvet=0 THEN PRINT "образует" ; ELSE PRINT "не образует" ;

PRINT " монотонно убывающую последовательность."

END

Пример 4.2. Задано множество точек на плоскости. Oпределить, принадлежит ли хотя бы одна точка множества внутренней области круга с центром в точке (a, b) и радиусом R.