Выяснить, есть ли в баскетбольных командах «Спартак» и «Зенит» игроки одинакового роста — Pascal(Паскаль)

{       Пример 5.3. Выяснить,  есть ли в баскетбольных командах
                   "Спартак" и "Зенит" игроки одинакового роста.

                               Система тестов
                Обозначения:
                N - количество игроков в команде "Спартак";
                M - количество игроков в команде "Зенит";
                S(N) - массив ростов игроков команды "Спартак";
                Z(M) - массив ростов игроков команды "Зенит".

     ╔═════╤══════╤══════════════════════════════════════════╤═══════════╗
     ║     │      │                 Данные                   │           ║
     ║Номер│Прове-├───────────────────┬──────────────────────┤           ║
     ║теста│ряемый│     "Спартак"     │       "Зенит"        │ Результат ║
     ║     │случай├───┬───────────────┼───┬──────────────────┤           ║
     ║     │      │ N │     S(N)      │ M │      Z(M)        │           ║
     ╟─────┼──────┼───┼───────────────┼───┼──────────────────┼───────────╢
     ║  1  │ Есть │ 3 │S(200,195,205) │ 4 │Z(198,200,206,192)│  "Есть"   ║
     ╟─────┼──────┼───┼───────────────┼───┼──────────────────┼───────────╢
     ║  2  │ Нет  │ 2 │S(200,196)     │ 2 │Z(198,201)        │  "Нет"    ║
     ╚═════╧══════╧═══╧═══════════════╧═══╧══════════════════╧═══════════╝
}
  Program EqualHeight;
    Uses Crt;
    Type Mas = Array [1..20] of Integer;
    Var
      Spart, Zenit : Mas;     { массивы ростов игроков }
      N, M, i, j   : Integer; { N - к-во игроков "Спартака", M - "Зенита" }
      Flag         : Boolean;
      Name         : String;  { имя команды }
  {------------------------------------------}
  Procedure Input(NCommand : Integer; Var Number : Integer; Var Rost:Mas);
                   { NCommand - номер команды (равен 1 или 2) }
   Begin { описание процедуры ввода данных по команде }
     If NCommand=1 then Name:='Спартак' else Name:='Зенит';
     Write('Введите количество игроков команды ', Name, ': ');
     ReadLn(Number);
     WriteLn('Введите роста игроков:');
     For i := 1 to Number do
       begin Write(i, ' игрок - '); ReadLn(Rost[i]) end;
     WriteLn
   End;
  {---------------------------------------------}
  Procedure Search; { описание процедуры поиска решения задачи }
   Begin
     i:=1; Flag:=FALSE;
     While (i<=N) and not Flag do { цикл по игрокам "Спартака" }
       begin
         j:=1;
         While (j<=M) and not Flag do {цикл по игрокам "Зенита"}
           If Spart[i]=Zenit[j] then Flag:=TRUE else j:=j+1;
         i:=i+1
       end;
   End;
  {------------------------------------------}
  Procedure OutResult; { описание процедуры вывода результата }
  Begin
    Write('О т в е т : в командах Спартак и Зенит ');
    If Flag then Write('есть игроки ') else Write('нет игроков ');
    WriteLn('одинакового роста.');
    ReadLn
  End;
  {------------------------------------------}
  BEGIN ClrScr;         { вызов процедур                }
    Input(1, N, Spart); { ввод данных по первой команде }
    Input(2, M, Zenit); { ввод данных по второй команде }
    Search;             { поиск решения задачи          }
    OutResult           { вывод результата              }
  END.

Leave a Comment

+ 20 = 22