Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.05.2022
Сообщений: 1

Объяснение работы программы по задаче

13.05.2022, 21:10. Показов 349. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Существует задача следующего содержания: Мелкий Интернет-провайдер предоставляет клиентам многоканальный телефон. Когда модем клиента звонит на этот номер, АТС соединяет его с любым из свободных каналов (если такие есть).
На каждом канале ведется журнал событий. В нем указаны упорядоченные по возрастанию моменты времени, в которые канал занимался или освобождался: первое число означает момент присоединения клиента к каналу, второе – момент его отсоединения, третье – момент присоединения следующего клиента и т.д. Время считается в секундах, прошедших от начала работы провайдера. Длительность соединения не меньше 1 секунды; канал готов к подключению клиента через 1 секунду после отключения предыдущего; если на нескольких каналах происходят одновременные подключения или отключения, в этот момент все каналы считаются занятыми.
Провайдеру нужно выяснить, в какие промежутки времени все каналы были свободны и в какие все были заняты.

И есть код к ней
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
program Provider;
  const MAX_N_CH = $40; INFTY = $7FFFFFFF;
  var heads : text; 
  fn: string;   
  chns : array[1..MAX_N_CH] of text;
  allfree, allbusy : text; 
  curr_val: array[1..MAX_N_CH] of longint;
  is_odd : array[1..MAX_N_CH] of boolean;
  NCh, i, minidx, used : byte;
  mintime : longint; 
Begin
  assign(heads, 'C:\..\provider.dat'); 
  reset(heads);
  readln(heads, NCh); 
  used := 0;
  for i := 1 to NCh do 
    is_odd[i] := true; 
  for i := 1 to NCh do 
  begin
    readln(heads, fn); 
    assign(chns[i], fn); 
    reset(chns[i]);
    if eof(chns[i]) then 
      curr_val[i] := INFTY
    else readln(chns[i], curr_val[i]);
  end;
  assign(allfree, 'C:\..\allfree.sol'); 
  rewrite(allfree);
  assign(allbusy, 'C:\..\allbusy.sol'); 
  rewrite(allbusy);
  write (allfree, '0');
  repeat
    mintime := curr_val[1]; 
    minidx := 1;
    for i := 2 to NCh do
      if (mintime > curr_val [i]) or (mintime = curr_val [i]) and (is_odd[i]) then 
      begin
        mintime := curr_val[i]; 
        minidx := i;
      end;
    if mintime = INFTY then 
      break;  
    if eof(chns[minidx]) then 
      curr_val[minidx] := INFTY
    else
    readln(chns[minidx], curr_val[minidx]);
    if is_odd[minidx] then 
    begin 
      used := used+1;
      if used = NCh then 
        write(allbusy, mintime);
      if used = 1 then  
        writeln(allfree,' ', mintime)
    end
    else 
    begin   
      used := used-1;
      if used = 0 then 
        write(allfree, mintime);
      if used = NCh-1 then 
        writeln(allbusy,' ', mintime)
    end;
    is_odd [minidx] := not is_odd [minidx] ; 
  until mintime = INFTY;
  if used = 0 then 
    writeln(allfree, ' now'); 
  if used = NCh then 
    writeln(allbusy,' now'); 
  close(allfree); 
  close(allbusy);
  for i := 1 to NCh do 
    close(chns[i])
end.
Помогите, пожалуйста, в объяснении что где и как происходит. Лучше через комментирование каждой строчки (либо хотя бы большинства важнейших). Сама программа полностью работает и выполняет то, что от неё требуют.
Заранее благодарю!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2022, 21:10
Ответы с готовыми решениями:

Объяснение результата работы программы
В результате этой программы выведется 3303 3003 Нужно объяснить как получился этот ответ. program sss; Uses crt; var...

Нужно объяснение к решенной задаче
Задание: Сформир. кв. матрицу порядка n по образцу 1 1 1 ... 1 1 1 0 1 1 ... 1 1 0 0 0 1 ... 1 0 0 . . . ... . . . 0 1...

Нужно объяснение работы функции zip в этой задаче
Всем привет! Изучаю haskell на примере задач из проекта Эйлера. Есть задача 112 о прыгучих числах (ссылка...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2022, 21:10
Помогаю со студенческими работами здесь

Объяснение работы программы
Можете пожалуйста объяснить, работу программы, куда что передается, за что отвечают функции и константы. Буду благодарен #include...

Нужно объяснение работы фрагментов программы
Ниже представлена два фрагмента программы, подскажите пожалуйста, что конкретно они делают. Заранее, большое спасибо) do { ...

Обработка нажатий определенных клавиш, нужно объяснение работы программы
Добрый день. Нашел код по обработке нажатий определенных клавиш в данной теме: https://www.cyberforum.ru/cpp-beginners/thread340745.html ,...

Объяснение к задаче
Народ , подмогните чутка . Препод дал задачу и проблема состоит в том что я не пойму условие . Вот условие : Даны целые числа а,...,a...

Объяснение работы с шифрованием
Здравствуйте. Ради интереса захотел сделать простой шифровщик/дешифровщик сообщений. По примерам легко смог создать нечто подобное: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru