Пример 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:="Нет совпадающих чисел"
все
кон
Блок-схема (фрагмент)
Исполнение алгоритма
Обозначения проверяемых условий:
(i
<= N-1) и (Flag = "Нет") => (1)
(i <= N) и (Flag = "Нет")
=> (2)
N теста
i
Flag
(1)
j
(2)
A[i]=A[j]
Otvet
1
1
"Нет"
+
2345
+++-(кц)
---
2
"Да"
+
34
++-(кц)
-+
3
-(кц)
"Есть совп.числа"
2
123
"Нет"
++-(кц)
23434
++-(кц)+-(кц)
---
"Нет
совп.чисел"
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('Нет совпадающих чисел.'); ReadLnEND.