TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

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

Пример 5.3. Выяснить, есть ли в баскетбольных командах "Спартак" и "Зенит" игроки одинакового роста.  
Система тестов
 
Обозначения:
  N -  количество игроков в команде "Спартак";
  M -  количество игроков в команде "Зенит";
  S(N) - массив ростов игроков команды "Спартак" (см);
  Z(N) - массив ростов игроков команды "Зенит" (см).
 
Номер теста Проверяемый случай Данные Результат
Спартак Зенит  Otvet
N S(N) M Z(M)
 1  Есть 3 200 195 205 4 198 200 206 192 "Есть игроки одинакового роста"
2  Нет 2 200 195 2 198 201 "Нет игроков одинакового роста"
 
Демонстрация
Школьный АЯ 
алг Рост (арг цел N, M, арг целтаб S[1:N],
          Z[1:M], резлит Otvet) 
нач цел i, j, лит Flag  
  i:=1; Flag:="Нет" 
  нц пока (i<=N) и (Flag="Нет") 
         |цикл по игрокам "Спартака"  
    j:=1  
    нц пока (j<=M) и (Flag="Нет") 
         |цикл по игрокам "Зенита"  
      если S[i]=Z[j] |проверка равенства ростов  
        то Flag:="Да 
        иначе  j:=j+1  
      все 
    кц 
    i:=i+1  
  кц 
  если Flag="Да" 
    то Otvet:="Есть игроки одинакового роста 
    иначе Otvet:="Нет игроков одинакового роста 
  все 
кон 
Блок-схема (фрагмент) 
 Исполнение алгоритма
 
Обозначения проверяемых условий:
(i <= N) и (Flag = "Нет")  => (1)
 (j < i)  и (Flag = "Нет") => (2)
Номер  
теста
 i  Flag (1) j (2)  S[i]=Z[j] Otvet
1 1  "Нет"  
 "Да"
+  1 
 2
+ - -(кц) - +  
2    -(кц)       "Есть"
2 1  "Нет" + 1 2 3 + + -(кц) - -  
2   + 1 2 3 + + -(кц) - -  
3   -(кц)       "Нет"
 
Turbo Pascal
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.
 

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

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

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

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

Hosted by uCoz