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

Разбор программы

11.03.2013, 14:50. Показов 683. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Текст задачи №1

«Железнодорожный узел». Железнодорожный сортировочный узел устроен так, как показано на рисунке. На правой стороне собрано в произвольном порядке несколько вагонов обоих типов по N штук. Тупик может вмещать все 2N вагонов. Пользуясь тремя сортировочными операциями: В, ИЗ, МИМО, собрать вагоны на левой стороне так, чтобы типы чередовались. Для решения задачи достаточно 3N-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
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
program poezd;
uses graphabc;
 
const sl=1000; // константа 'сна'
 
type
   ss=^vagon;
   vagon=record
      tip:boolean;
      next:ss;
      end;             //описывается запись
 
var i,n,k:integer;
    s1,s2,o,inp,outp,tupik:ss;
    b:boolean;              //переменные
 
procedure outdoroga;
var j:integer;
    s:ss;
begin
  setpencolor(clblack);
  setpenwidth(1);
  line(0,13,1000,13);
  line(0,23,1000,23);
  line(505,53,505,290);
  line(495,53,495,290);
  line(490,285,510,285);
  Arc(535,53,40,90,180);
  Arc(535,53,30,90,180);
  Arc(465,53,40,0,90);
  Arc(465,53,30,0,90);
  setbrushcolor(clwhite);
  textout(465,300,'Тупик');
  s:=inp;
  j:=1;
  while s<>nil do
    begin
    if s^.tip then setbrushcolor(clgreen) else setbrushcolor(clblue);
    rectangle(510+j*22,10,530+j*22,26);
    s:=s^.next;
    j:=j+1;
    end;
  s:=outp;
  j:=1;
  while s<>nil do
    begin
    if s^.tip then setbrushcolor(clgreen) else setbrushcolor(clblue);
    rectangle(490-j*22,10,470-j*22,26);
    s:=s^.next;
    j:=j+1;
    end;
  s:=tupik;
  j:=1;
  while s<>nil do
    begin
    if s^.tip then setbrushcolor(clgreen) else setbrushcolor(clblue);
    rectangle(492,30+j*22,508,50+j*22);
    s:=s^.next;
    j:=j+1;
    end;
  setbrushcolor(clwhite);
               textout(10,240,'Кол-во ходов   : '+inttostr(k));
  if n<>0 then textout(10,270,'Кол-во вагонов : '+inttostr(n));
end;
//процедура описания дороги и ее заполнения
  
procedure v;
var q:ss;
begin
q:=inp^.next;
inp^.next:=tupik;
tupik:=inp;
inp:=q;
end;
 
procedure vpaint;
begin
clearwindow;
setpenwidth(3);
setpencolor(clred);
Arc(535,53,20,90,180);
line(515,52,525,45);
line(515,52,510,45);
outdoroga;
redraw;
sleep(sl);
end;
 
procedure iz;
var p:ss;
begin
p:=tupik^.next;
tupik^.next:=outp;
outp:=tupik;
tupik:=p;
end;
 
procedure izpaint;
begin
clearwindow;
setpenwidth(3);
setpencolor(clred);
Arc(465,53,20,0,90);
line(467,33,477,28);
line(467,33,477,43);
outdoroga;
redraw;
sleep(sl);
end;
 
procedure mimo;
var p:ss;
begin
p:=inp^.next;
inp^.next:=outp;
outp:=inp;
inp:=p;
end;
 
procedure mimopaint;
begin
clearwindow;
setpenwidth(3);
setpencolor(clred);
line(485,18,515,18);
line(487,18,497,13);
line(487,18,497,23);
outdoroga;
redraw;
sleep(sl);
end;
 
begin
k:=0;
setfontsize(20);
setfontcolor(clblue);
setwindowsize(1000,350);
lockdrawing;
randomize;
textout(100,100,'ВВедите количество вагонов (кратно 2) : ');
outdoroga;
redraw;
readln(n);
if n<=0 then begin n:=6; textout(100,140,'Ошибка! Выбрано вагонов : '+inttostr(n)); end else
if (n mod 2) <> 0 then begin n:=n+1; textout(100,140,'Ошибка! Выбрано вагонов : '+inttostr(n)); end else textout(100,140,'Количество вагонов : '+inttostr(n));
redraw;
sleep(sl);
o:=nil;
for i:=1 to n div 2 do 
  begin
    new(s1);
    s1^.next:=o;
    s1^.tip:=true;
    o:=s1;
  end;
o:=nil;
for i:=1 to n div 2 do 
  begin
    new(s2);
    s2^.next:=o;
    s2^.tip:=false;
    o:=s2;
  end;
o:=nil;
for i:=1 to n do
  begin
    if random(2)=1 then b:=true else b:=false;
    if b then if s1<>nil then 
                    begin
                    inp:=s1;
                    s1:=s1^.next;
                    inp^.next:=o;
                    o:=inp;
                    end
                    else
                    begin
                    inp:=s2;
                    s2:=s2^.next;
                    inp^.next:=o;
                    o:=inp;
                    end
         else if s2<>nil then 
                    begin
                    inp:=s2;
                    s2:=s2^.next;
                    inp^.next:=o;
                    o:=inp;
                    end
                    else
                    begin
                    inp:=s1;
                    s1:=s1^.next;
                    inp^.next:=o;
                    o:=inp;
                    end;
  end;
clearwindow;
outdoroga;
redraw;
outp:=inp;
inp:=inp^.next;
outp^.next:=nil;
sleep(sl);
b:=not(outp^.tip);
k:=1;
mimopaint;
while (tupik<>nil)or(inp<>nil) do
  begin
  k:=k+1;
  if (tupik<>nil)and(tupik^.tip=b) then begin 
                                          if b then b:=false else b:=true;
                                          if (inp<>nil)and(tupik^.tip=inp^.tip) then begin mimo; mimopaint; end else begin
                                          iz;
                                          izpaint;
                                          end;
                                        end
                                   else if inp^.tip=b then begin
                                                             if b then b:=false else b:=true;
                                                             mimo;
                                                             mimopaint;
                                                           end
                                                      else begin v;
                                                                 vpaint;
                                                                 end;
  end;
  clearwindow;
  outdoroga;
  redraw;
  sleep(sl);
end.
Добрые люди не могли бы вы популярно обьяснить как именно работает программа и помочь составить блок схему
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2013, 14:50
Ответы с готовыми решениями:

Разбор простой программы
Помогите разобраться с простой программой по подсчету букв &quot;А&quot; в строке.Нашел готовую программу в интернете а разобраться не...

Разбор программы Паскаль
Помогите разобраться в программе Паскаль. Что означают: 4,9(почему пустое значение?), 12,13,14,24 строки 1. const 2. vtext: string =...

Числовые значения. Разбор программы
Здравствуйте форумчане. Копался в интернете и наткнулся на учебник. Возникли незначительные вопросы, которые очень трудно найти в...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2013, 14:50
Помогаю со студенческими работами здесь

Разбор и решение школьных олимпиад, программы на Паскале
http://g6prog.narod.ru/

Разбор задачи
Объясните, пожалуйста, для чего нужна строка, выделенная зеленым, вот в этой программе const Letters =...

Разбор программы
Начал изучать WPF и столкнулся с проблемой. Не могу до конца разобрать программой. То что не понятно выделил красным. Почему метод...

Разбор программы
Всем привет друзья! Помогите разобраться как работает программа (как генерируется ряд 0 5 55 500... и от куда появляется ответ) ...

Разбор программы
Всем доброго времени суток. Сестра просит объяснить что и как делает программа хотябы в общих шагах, но т.к. я пока полный 0 в ассемблере...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru