TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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  "Нет" + 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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz