Узнать финальный счет игры по протоколу

marambol

Всём привет! Задали мне тут задачку, но не как не могу разабраться. Вот условие: Перед летними каникулами Петя решил изучить баскетбольные правила, чтобы успешно участвовать в чемпионате города в составе школьной команды. Как известно, в баскетболе существует три способа забросить мяч в корзину; • Штрафной бросок. В этом случае игрок бросает мяч без помех с определенного расстояния, однако за заброшенный мяч команда полу чает лишь одно очко. • Ближний бросок. Игрок бросает мяч с игры, но расстояние до корзины не превышает L. В этом случае команда получает два очка за успешно заброшенный мяч. • Дальний бросок. В данном случае всё аналогично ближнему броску, но при этом расстояние превышает L и, соответственно, команда в случае успеха получает три очка. Петя, как истинный программист, решил реализовать систему автоматизированного подсчета очков. Входными данными для системы будет протокол некоторого баскетбольного матча: количество успешных бросков N; расстояние L, превышение которого позволяет считать бросок дальним; а также информация по каждому броску (команда, забросившая мяч и дальность броска). Как говорится, ничто так не важно в игре, как результат на табло. В связи с этим, главная задача Пети как программиста - узнать финальный счет игры по протоколу. Входные данные: На вход программе подается сначала два целых числа N и L - количество заброшенных мячей (1 <=N<= 10) и расстояние, превышение которого позволяет считать бросок дальним (1=< L <=30). Далее на вход подается N пар чисел целых ti и di - номер команды, которая забросила мяч (1 < ti <2) и расстояние, с которого был заброшен мяч (-1=< di=< 50, di=-1 означает, что мяч был заброшен со штрафного броска, а во всех остальных случаях - с игры). Выходные данные: В результате программа должна вывести счет игры в формате «А:В» (без кавычек), где А - количество очков, заработанное первой командой, а В - второй.
3 ответа

marambol

номер команды, которая забросила мяч (1 < ti <2)
интересно, каким может быть номер при таком условии?


marambol

Ошибся, везде в неравенствах: больше либо равно, меньше либо равно.


marambol

Если решение не посылается на проверочный ресурс, где задаются входные данные то так.
var n,L,i,ti,di,a,b:integer;
begin
repeat
write('1<=n<=10 n=');
readln(n);
until n in [1..10];
repeat
write('1<=L<=30 L=');
readln(L);
until L in [1..30];
a:=0;
b:=0;
for i:=1 to n do
 begin
  repeat
  write('Номер команды 1 или 2 ti=');
  readln(ti);
  until ti in [1,2];
  repeat
  write('Номер расстояние от -1 до 50 di=');
  readln(di);
  until (di>=-1)and(di<=30);
  if ti=1 then
   begin
    if di=-1 then a:=a+1
    else if di in [0..L] then a:=a+2
    else a:=a+3
    end
   else
    begin
     if di=-1 then b:=b+1
     else if di in [0..L] then b:=b+2
     else b:=b+3
    end
 end;
write(a,':',b);
end.
Если бы не Паскаль АВС, то можно решать через case, но это чудо не понимает
case di of
0..L:
требует константу вместо L