Вторник, 08.10.2024, 21:15
Информатика и математика в Плесской школе
Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

На вход программе подаются сведения о пассажирах, сдавших свой багаж в камеру хранения. В первой строке задано текущее время: через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). Во второй строке сообщается количество пассажиров N, которое не меньше 10, но не превосходит 1000. Каждая из следующих N строк имеет следующий формат:
<Фамилия> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более, чем из 20 символов, <время освобождения ячейки> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). <Фамилия> и <время освобождения ячейки> разделены одним пробелом. Сведения отсортированы в порядке времени сдачи багажа.
 
Требуется написать программу, выводящую фамилии пассажиров, которые в ближайшие 2 часа должны освободить ячейки, в хронологическом порядке освобождения ячеек.

Пример входных данных:
10:00
3
Иванов 12:00
Петров 10:00
Сидоров 12:12
Результат работы программы для этого примера:
Петров
Иванов

Решение:

Автор Орехова Екатерина 

program n1;
uses crt;
var i,j,n,f,k : integer;
s,s1,s2,t: string;
m,t1,d:real;
a:array [1..1000] of string;
b:array [1..1000] of real;
begin
readln (t);
readln (n);
t[3]:='.';
k:=0;
t1:=strtofloat(t);
for f:=1 to n do begin readln (s);
i:=1;
s1:='';
while (s[i]<>' ') do begin
                     s1:=s1+(s[i]);    
//фамилия
                     i:=i+1;
                     end;
i:=i+1;
s2:='';
while (i<>length(s)) do begin
                        s2:=s2+(s[i]);  
//время
                        i:=i+1;
                        end;
s2[3]:='.';
m:=strtofloat(s2);
if ((t1+2)>= m) then  begin
                       k:=k+1;
                       a[k]:=s1;
                       b[k]:=m;
                       end;
                       end;

for i:=1 to k-1 do
    for j:=1 to k-1 do
        if (b[j]>b[j+1]) then begin
            d:=b[j];
            s1:=a[j];
            b[j]:=b[j+1];
            a[j]:=a[j+1];
            b[j+1]:=d;
            a[j+1]:=s1;
            end;
for i:=1 to k do writeln (a[i], b[i]:5:2);
writeln;

end.

 

Поиск
Календарь
«  Октябрь 2024  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Учительский портал
    Copyright MyCorp © 2024