infoegehelp.ru

Успешно сдать ЕГЭ по информатике
  • Главная
  • Контакты
  • Карта сайта
  • Помощь сайту
Важно
  • Демо варианты ЕГЭ
  • Учим числа: 2 в степени
  • Биты, байты, килобайты
Решение задач
  • Задачи вне основных разделов информатики
Разделы информатики
  • 2011-12-18-14-33-54Системы счисления
  • 2011-12-18-16-45-20Алгебра логики
  • 2011-12-18-16-55-26Программирование
  • 2011-12-18-16-53-40Кодирование информации
  • 2011-12-18-16-56-19Компьютерные сети и Интернет
  • -excelЭлектронные таблицы (Excel)
  • 2011-12-18-16-57-50Базы данных
  • 2011-12-18-16-58-50Графы
  • 2011-12-18-17-00-15Файловая система
  • Устройство компьютера
  • ПО компьютера

Разбор задачи C4 (демо ЕГЭ 2013)

На вход программе подаются сведения о пассажирах, желающих сдать свой багаж в камеру хранения на заранее известное время до полуночи. В первой строке сообщается число пассажиров N, которое не меньше 3, но не превосходит 1000; во второй строке – количество ячеек в камере хранения K, которое не меньше 10, но не превосходит 1000.
Каждая из следующих N строк имеет следующий формат:

<Фамилия> <время сдачи багажа> <время освобождения ячейки>,

где <Фамилия> – строка, состоящая не более чем из 20 непробельных символов;
<время сдачи багажа> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа);
<время освобождения ячейки> имеет тот же формат.
<Фамилия>, <время сдачи багажа> и <время освобождения ячейки> разделены одним пробелом.
Время освобождения больше времени сдачи.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из пассажиров в камере хранения выделяется свободная ячейка с минимальным номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит, не дожидаясь освобождения одной из них.
Требуется написать программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет выводить на экран для каждого пассажира номер ему предоставленной ячейки (можно сразу после ввода данных очередного пассажира). Если ячейка пассажиру не предоставлена, то его фамилия не печатается.
Пример входных данных:
3
10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работы программы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1
Решение:

Программа написана на языках:

  • Паскаль (среда разработки Turbo Pascal 7.0),
  • Бейсик (среда разработки Quick Basic 4.5),
  • Си (среда разработки Borland C++ 3.1),
  • Алгоритмический язык (среда разработки Кумир 1.9.0).

Чтобы прочесть комментарии к программе, наведите мышью на соответствующую строку. Строки, снабженные комментарием, выделены фиолетовым цветом.

Напротив названия языка программирования в скобках содержатся ссылки на скачку исходников и ехе (исполняемых файлов).

Паскаль (исходник, exe-файл) Алгоритмический язык (исходник)
var
  i,j,N,K,time1,time2: integer;
  p:array[1..1000] of integer;
  c,c1:char;
  name:string;
begin
  readln(N,K);
  for i:=1 to K do
     p[i]:=0;

  for i:=1 to N do
  begin
     name:='';
     repeat
        read(c);
        name:=name+c;
     until c=' ';

     read(c,c1);
     time1:=60*((ord(c)-ord('0'))*10+ ord(c1)-ord('0'));
     read(c,c,c1);
     time1:=time1+(ord(c)-ord('0'))*10+ord(c1)-ord('0');

     read(c,c,c1);
     time2:=60*((ord(c)-ord('0'))*10+ ord(c1)-ord('0'));
     readln(c,c,c1);
     time2:=time2+(ord(c)-ord('0'))*10+ord(c1)-ord('0');

     for j:=1 to K do
        if p[j]<=time1 then
        begin
           p[j]:=time2;
           writeln(name,j);
           break;
        end;

  end;
  readln
end.
алг
нач
   цел i, j, N, K, time1,time2
   целтаб p[1:1000]
   лит str,name
   ввод N
   ввод K
   нц для i от 1 до K
      p[i]:=0
   кц

   нц для i от 1 до N
      ввод str
      j:=1
      name:=""
      нц
         name:=name+str[j]
         j:=j+1
      кц при str[j]=" "

      time1:=(код(str[j+1])-код('0'))*60*10
      time1:=time1+(код(str[j+2])-код('0'))*60
      time1:=time1+(код(str[j+4])-код('0'))*10
      time1:=time1+(код(str[j+5])-код('0'))

      time2:=(код(str[j+7])-код('0'))*60*10
      time2:=time2+(код(str[j+8])-код('0'))*60
      time2:=time2+(код(str[j+10])-код('0'))*10
      time2:=time2+(код(str[j+11])-код('0'))

      нц для j от 1 до K
         если time1>=p[j] то
            p[j]:=time2
            вывод name,' ',j,нс
            выход
         все
      кц

   кц
кон
Бейсик (исходник) СИ (исходник, exe-файл)
DIM i, j, N, K, time1, time2 AS INTEGER
DIM p(1000) AS INTEGER
DIM nm AS STRING
DIM s AS STRING
INPUT N
INPUT K
FOR i = 1 TO K
  p(i) = 0
NEXT i

FOR i = 1 TO N
  LINE INPUT s
  c$ = MID$(s, 1, 1)
  j = 1
  WHILE NOT (c$ = " ")
    j = j + 1
    c$ = MID$(s, j, 1)
  WEND
  nm = MID$(s, 1, j - 1)

  time1 = (ASC(MID$(s, j + 1, 1))-ASC("0"))*60*10
  time1 = time1+(ASC(MID$(s, j+2,1))-ASC("0"))*60
  time1 = time1 +(ASC(MID$(s, j+4,1))-ASC("0"))*10
  time1 = time1 + (ASC(MID$(s, j + 5, 1))-ASC("0"))

  time2 = (ASC(MID$(s, j + 7,1))-ASC("0"))*60*10
  time2 = time2 +(ASC(MID$(s, j+8,1))-ASC("0"))*60
  time2 =time2+(ASC(MID$(s, j+10,1))-ASC("0"))*10
  time2 = time2 + (ASC(MID$(s, j+11,1))-ASC("0"))

  FOR j = 1 TO K
    IF time1 >= p(j) THEN
       p(j) = time2
       PRINT nm; j
       GOTO 10
    END IF
  NEXT j

10 NEXT i
END
#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
   int i,j,N,K,time1,time2,chas1,min1,chas2,min2;
   int p[1000];
   char name[20];
   scanf("%d",&N);
   scanf("%d",&K);
   for(i=0;i<K;i++){
       p[i]=0;
   }

   for(i=0;i<N;i++){
      scanf("%s %d%*c%d%d %*c%d",
               name,&chas1,&min1,&chas2,&min2);
      time1=chas1*60+min1;
      time2=chas2*60+min2;

      for(j=0;j<K;j++){
         if(p[j]<=time1){
             p[j]=time2;
             printf("%s %d\n",name,j+1);
             break;
         }
      }

   }

   getch();
}

Работа программы на этих языках:

Задача C4 ЕГЭ по информатике 2013 работа программы паскаль, си, бейсик

Задача C4 ЕГЭ по информатике 2013 работа программы кумир

Перейти к С4-2012.

Перейти к С4-2011.

Перейти к С4-2010.

Перейти к С4-2009.

Перейти к другим задачам.

 

Rambler's Top100

© Латыпова В.А., 2012-2020. Все права защищены.
Копирование материалов сайта только с разрешения администрации сайта