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

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

Номер 
теста
Проверяемый 
случай
Данные Результат
N Массив А Otvet
1
2
Имеется
Не имеется

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  "Нет" + 2
3
4
5
+
+
+
-(кц)
-
-
-
 
2   "Да" + 3
4
+
+
-(кц)
-
+
 
3     -(кц)       "Есть совп.числа"
2 1
2
3
 "Нет" +
+
-(кц)
2
3
4
3
4
+
+
-(кц)
+
-(кц)
-
-
-
 
 
 
 
 "Нет совп.чисел"


 
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.
 
QBasic

CLS 
INPUT "N = ", N : DIM A(N)   ' ввод массива А
FOR i = 1 TO N PRINT "A(" ; i ; ") = " ;
  INPUT A(i)
NEXT i
PRINT : PRINT "Массив А"   ' вывод массива А
FOR i = 1 TO N
  PRINT A(i) ;
NEXT i : PRINT
i = 1 : Flag = 0   ' поиск совпадающих чисел
WHILE (i <= N - 1) AND (Flag = 0)
  j = i + 1
  WHILE
(j <= N) AND (Flag = 0)
  IF A(i)=A(j) THEN Flag=1 ELSE j=j+1
 WEND
 i = i + 1
WEND
PRINT : PRINT "О т в е т :"
IF
Flag = 1 THEN
  PRINT "Есть совпадающие числа."
  ELSE PRINT "Нет совпадающих чисел."
END IF
END

Другие записи

10.06.2016. Пример 5.2. Дана целочисленная матрица A(N, N). Определить, имеются ли среди её элементов, лежащих ниже главной диагонали, отрицательные числа.
Система тестов Номер  теста Проверяемый  случай Данные Результат N Массив А Otvet 1 Имеются 4  1 -1  2  1  2  3  1  0  1 -1  2 -1 -2  1  0  1  ''Есть отрицательные числа'' 2 Не…
10.06.2016. Пример 5.3. Выяснить, есть ли в баскетбольных командах "Спартак" и "Зенит" игроки одинакового роста.
Система тестов  Обозначения:   N -  количество игроков в команде "Спартак";   M -  количество игроков в команде "Зенит";   S(N) - массив ростов игроков команды "Спартак" (см);   Z(N) - массив ростов…