Пример 2.3.
В баскетбольную команду могут быть приняты ученики, рост
которых превышает 170 см. Составьте список кандидатов в команду из
учеников класса.
Система тестов
Номер
теста
|
Проверяемый
случай
|
Число
учеников
|
Фамилии
|
Рост
|
Результаты
|
1
|
Есть
кандидаты
|
3
|
Кулов
Чехин
Уваров
|
171
165
178
|
Кулов
Уваров
|
2
|
Нет
кандидатов
|
2
|
Ершов
Иванов
|
170
165
|
Нет
кандидатов
|
Демонстрация
Школьный АЯ
алг Баскетбол (арг цел N, арг лит таб Фам[1:N], арг вещ
таб Рост[1:N], рез лит таб Канд [1:N] )
нач цел i, k
k:=0
нц для i от 1 до N | запись фамилий кандидатов в таблицу Канд
если Рост[i]>170
то k:=k+1; Канд [k] := Фам [i]
все
кц
если k=0
то вывод "В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ."
иначе нц для i от 1 до k
вывод Канд [i]
кц
все
кон
Исполнение алгоритма
N теста
|
i
|
Рост[i] > 170
|
K
|
Кондидаты в команду
|
1
|
1
2
3
|
+
-
+
|
0
1
2
|
Кулов
Уваров
|
2
|
1
2
|
-
-
|
0
|
-
|
TurboPascal
Program BascetBall;
Uses Crt;
Var
SurName : Array [1..30] of String; { фамилии учеников }
Height : Array [1..30] of Real; { рост учеников }
Cand : Array [1..30] of String; { фамилии кандидатов }
NPupil, i, K : Integer; { NPupil - число учеников,
K - количество зачисленных}
BEGIN ClrScr;
Write('В КОМАНДУ ЗАЧИСЛЯЮТСЯ УЧЕНИКИ, ');
WriteLn('РОСТ КОТОРЫХ ПРЕВЫШАЕТ 170 СМ.'); WriteLn;
Write('Сколько всего учеников ? ');
ReadLn(NPupil);
WriteLn('Введите фамилии и рост учеников :');
For i := 1 to NPupil do
begin Write(i, '. Фамилия - '); ReadLn(SurName[i]);
Write(' Рост - '); ReadLn(Height[i]);
end; WriteLn;
K:=0; { Составление списка команды }
For i := 1 to NPupil do
If Height[i]>170 then
begin K:=K+1; Cand[K] := SurName[i] end;
If K=0 then WriteLn('В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ.')
else
begin WriteLn('КАНДИДАТЫ В БАСКЕТБОЛЬНУЮ КОМАНДУ :');
For i := 1 to K do WriteLn( i, '. ' , Cand[i]);
end;
ReadLn
END.
QBasic
CLS : PRINT "В КОМАНДУ ЗАЧИСЛЯЮТСЯ УЧЕНИКИ, ";
PRINT "РОСТ КОТОРЫХ ПРЕВЫШАЕТ 170 СМ." : PRINT
INPUT "Сколько всего учеников ? " , NPupil
DIM SurName$(NPupil), Height(NPupil), Cand$(NPupil)
PRINT "Введите фамилии и рост учеников :"
FOR i = 1 TO NPupil
INPUT "Фамилия - " , SurName$(i)
INPUT "Рост - " , Height(i)
NEXT i : PRINT
K = 0
FOR i = 1 TO NPupil
IF Height(i) > 170 THEN K = K + 1 : Cand$(K) = SurName$(i)
NEXT i
IF K = 0 THEN
PRINT "В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ."
ELSE
PRINT "КАНДИДАТЫ В БАСКЕТБОЛЬНУЮ КОМАНДУ :"
FOR i = 1 TO K
PRINT i ; ". " ; Cand$(i)
NEXT i
END IF
END