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

Динамические структуры на Pascal

31.05.2023, 10:37. Показов 547. Ответов 0

Студворк — интернет-сервис помощи студентам
Преподаватель сказал, что программа работает неверно, но я не могу понять почему. Помогите пожалуйста(
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{Интенсивность потока телефонных звонков в агентство по заказу железнодорожных билетов, имеющему один 
телефон, составляет P вызовов/час. Продолжительность оформления заказа на билет равна t минут.
Агентство работало T0 часов. По запросу с клавиатуры определить среднее время ожидания в очереди за 
период времени T1..T2 (T2<T0) .}
const p=20;              //количество вызовов за час
      tp=60 div p;       //длительность до появления нового вызова в минутах
      tn=5;             //длительность обслуживания вызова в минутах 
      t0=60;             //общее время в минутах
var que: array of record //очередь 
      num,               //номер объекта
      time,              //когда вошел в очередь
      next:integer;      //ссылка на следующий объект
end;
 
var   mem,               //переменная для динамической памяти
      len,               //объектов в очереди     
      tail,              //хвост очереди
      mnum,              //номер обслуживаемого объекта
      mtime,             //когда объект становится на обслуживание
      i,j,x,n,t,t1,t2,sum,k: integer;
begin
  writeln('Введите период времени');
  write('T1=');
  read(t1);
  write('T2=');
  read(t2);
  mem:=1;
  setlength(que,1);
  sum:=0;
  k:=0;
  len:=0;
  tail:=0;
  mnum:=0;
  mtime:=0;
  n:=1;
  t:=1;
  while (t<=t0) do begin
    //объект уходит
    if ((mnum<>0) and ((t-mtime)=tn)) then begin { Если есть обслуживаемый объект (mnum не равен 0) 
    и прошло время обслуживания tn, то объект уходит.}
      if (len=0) then begin
        mnum:=0;
        mtime:=0;
      end
      else begin
        if (len=1) then begin { Если в очереди есть объекты, то первый из 
    них становится обслуживаемым, а остальные сдвигаются на один шаг.}
          mnum:=que[tail].num;
          mtime:=t;
          if ((t1<=t) and (t2>=t)) then begin
            sum:=sum+t-que[tail].time;
            k:=k+1;
          end;
          tail:=0;
          len:=0;
        end
        else begin
          j:=tail;
          while (que[que[j].next].next<>0) do j:=que[j].next;
          mnum:=que[que[j].next].num;
          mtime:=t;
          if ((t1<=t) and (t2>=t)) then begin
            sum:=sum+t-que[que[j].next].time;
            k:=k+1;
          end;
          que[j].next:=0;
          len:=len-1;
        end;
      end;
    end;
    if (t mod tp = 1) then begin {Если прошло время tp до появления нового вызова, 
    то создается новый объект. Если нет обслуживаемого объекта, то он становится обслуживаемым.}
      if (mnum=0) then begin
        mnum:=n;
        n:=n+1;
        mtime:=t;
      end
      else begin
        mem:=mem+1;
        setlength(que,mem);
        j:=mem-1;
        len:=len+1;
        que[j].num:=n;
        n:=n+1;
        que[j].next:=tail;
        que[j].time:=t;
        tail:=j;
      end;
    end;
    t:=t+1;
  end;
  
  if (T1>T2) then begin write ('Т2 должно быть больше Т1, ошибка ввода');
  exit;
  end;
  writeln('Среднее время ожидания в очереди: ',sum/k,' минуты');
  writeln('(Cчитаются те, кто на момент T2 уже вышел из очереди)');
  writeln();
  if (mnum<>0) then write('Сейчас обрабатываюся номер: ');
  if (mnum<>0) then write(mnum,' ');
  writeln;
  if (len<>0) then write('В очереди стоят номера: ');
  j:=tail;
  while (que[j].next<>0) do begin
    write(que[j].num,' ');
    j:=que[j].next;
  end;
  if (len<>0) then write(que[j].num);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2023, 10:37
Ответы с готовыми решениями:

Динамические структуры данных Pascal
Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента E, если E входит в L

Динамические структуры
Помогите пожалуйста

Динамические структуры
задание необходимо выполнить с использованием динамических структур. В текстовом файле F1 находится список слов (по одному на...

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

Динамические структуры данных
Определить, симметричен ли заданный во входном файле текст (за ним следует точка).

Динамические структуры данных
Ребят, пожалуйста помогите. Совсем не понимаю эту тему. Задание: Дана непустая последовательность непустых слов из букв; между соседними...

Динамические структуры данных
как доработать эту программу, чтобы в ней появился ссылочный тип, динамические структуры данных? сама программа печатает слово из первых...

Динамические структуры данных
Дан список из последовательности натуральных чисел. Добавить в список после максимального элемента минимальный. Помогите...

Динамические структуры данных
Не используя массивы!Помогите плиз Разработать программу, которая содержит текущую информацию о книгах в библиотеке.Сведения о книгах...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru