Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачник по программированию.doc
Скачиваний:
25
Добавлен:
03.11.2018
Размер:
1.94 Mб
Скачать

Глава 5. Алгоритмы, реализуемые с помощью вложенных циклов типа пока

Схема вложенных циклов типа пока:

Пример 5.1. Определить, имеется ли в заданном целочисленном массиве A(N) хотя

бы одна пара совпадающих по значению чисел.

Система тестов

Номер

теста

Проверяемый

случай

Данные

Результат

N

Массив А

Otvet

1

2

Имеется

Не имеется

4

3

(1,3,2,3)

(1,2,3)

"Есть совпадающие числа"

"Нет совпадающих чисел"

Алгоритмический язык

алг Равенство(арг цел N, арг цел таб A[1:N], рез лит Otvet)

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

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

нц пока (i<=N–1) и (Flag="Нет") | цикл по первому числу из пары

j:=i+1

нц пока (j<=N) и (Flag="Нет") | цикл по второму числу из пары

если A[i]=A[j] | проверка равенства чисел

то Flag:="Да"

иначе j:=j+1

все

кц

i:=i+1

кц

если Flag="Да"

то Otvet:="Есть совпадающие числа"

иначе Otvet:="Нет совпадающих чисел"

все

кон

Turbo Pascal

Program Equal;

Uses Crt;

Type Mas = Array [1..20] of Integer;

Var A : Mas;

i, j, N : Integer;

Flag: Boolean;

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

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

Begin ClrScr;

Write('N = '); 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] : 4);

WriteLn; WriteLn;

End;

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

Procedure Search(Var A:Mas; Var Flag:Boolean); {Описание процедуры}

Begin {поиска решения}

i:=1; Flag:= FALSE;

While (i<=N-1) and not Flag do {цикл по первому числу из пары}

begin

j:=i+1;

While (j<=N) and not Flag do {цикл по второму числу из пары}

If A[i]=A[j] then Flag:=TRUE else j:=j+1;

i:=i+1;

end;

End;

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

BEGIN

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

Search(A, Flag); {вызов процедуры поиска решения задачи}

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

If Flag then WriteLn('Есть совпадающие числа.' )

else WriteLn('Нет совпадающих чисел.');

ReadLn;

END.

Пример 5.2. Дана целочисленная матрица A(N, N). Определить, имеются ли среди её

элементов, лежащих ниже главной диагонали, отрицательные числа.