С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18

Собрать вагоны на левой стороне так, чтобы типы чередовались

11.05.2015, 13:08. Показов 1221. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Железнодорожный сортировочный узел устроен так, как показано на ри-сунке. На правой стороне собрано в произвольном порядке несколько вагонов обоих типов по N штук. Тупик может вмещать все 2N вагонов. Пользуясь тремя сортировочными операциями: В, ИЗ, МИМО, собрать вагоны на левой стороне так, чтобы типы чередовались.
Помогите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.05.2015, 13:08
Ответы с готовыми решениями:

Пользуясь тремя сортировочными операциями В, ИЗ, МИМО собрать вагоны на левой стороне
На правой стороне собрано некоторое число вагонов двух типов, обоих по n штук. Тупик может вмещать все 2n вагонов . Пользуясь тремя...

Обьединить два списка так, чтобы их элементы чередовались
Добрый день! Помогите пожалуйста. Нужно обьеденить два списка, что-бы их элементы чередовались. Например и должно получится как

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

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
11.05.2015, 13:21
На каком рисунке?
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
11.05.2015, 13:26  [ТС]
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8652 / 4487 / 1669
Регистрация: 01.02.2015
Сообщений: 13,893
Записей в блоге: 12
11.05.2015, 21:08
Лучший ответ Сообщение было отмечено roman0495 как решение

Решение

roman0495, задача несложная.
Покажи, как ты описал типы, объявил переменные, реализовал процедуры В, ИЗ, МИМО.

В виде алгоритма:
1. Первый вагон МИМО
2. Пока есть вагоны справа и в тупике выполнять цикл
2.1. Если можно взять следующий вагон из тупика - ИЗ. перейти к п.2.
2.2. Если можно взять следующий вагон справа - МИМО и перейти к п.2., иначе В и перейти к п.2.
2.3. Этот пункт не должен выполняться - ходы должны быть, но на всякий случай - прерывание цикла.

Добавлено через 4 часа 17 минут
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
program ClassificationYard;
 
const
  Nmax = 100;
type
  TRailroadCars = (TypeA, TypeB);
  TArray = array [1..2 * Nmax] of TRailroadCars;
 
  procedure ShowStream(const A: TArray; N: integer);
  var
    i: integer;
  begin
    Write('< ');
    for i := 1 to N do
      if A[i] = TypeA then
        Write('A')
      else
        Write('B');
    writeln(' >');
  end;
 
  procedure ShowState(const Ain, Aout, Ad: TArray; const Nin, Nout, Nd: integer);
  begin
    writeln('In stream:');
    ShowStream(Ain, Nin);
    writeln('Out stream:');
    ShowStream(Aout, Nout);
    writeln('Railway deadlock:');
    ShowStream(Ad, Nd);
  end;
 
  {операция МИМО}
  procedure MovePassBy(var Ain, Aout, Ad: TArray; var N, Nin, Nout, Nd: integer);
  begin
    Inc(Nout);
    Aout[Nout] := Ain[2 * N - Nin + 1];
    Dec(Nin);
  end;
 
  {операция В}
  procedure MoveIn(var Ain, Aout, Ad: TArray; var N, Nin, Nout, Nd: integer);
  begin
    Inc(Nd);
    Ad[Nd] := Ain[2 * N - Nin + 1];
    Dec(Nin);
  end;
 
  {операция ИЗ}
  procedure MoveOut(var Ain, Aout, Ad: TArray; var N, Nin, Nout, Nd: integer);
  begin
    Inc(Nout);
    Aout[Nout] := Ad[Nd];
    Dec(Nd);
  end;
 
var
  RailwayDeadlock,  {тупик}
  InStream,         {входной поток}
  OutStream: TArray;{выходной поток}
  N:  integer;      {количество вагонов каждого типа}
  Nin,              {текущее количество вагонов во входном потоке}
  Nout,             {текущее количество вагонов в выходном потоке}
  Nd: integer;      {текущее количество вагонов в тупике}
  temp: TRailroadCars;
  i, i1, i2: integer;
begin
  {инициализация}
  N  := 10;
  Nin := 2 * N;
  Nout := 0;
  Nd := 0;
  { - заполнение входного потока и перемешивание}
  Randomize;
  for i := 1 to N do
  begin
    InStream[i] := TypeA;
    InStream[N + i] := TypeB;
  end;
  for i := 1 to 2 * N do
  begin
    i1 := random(2 * N) + 1;
    i2 := random(2 * N) + 1;
    temp := InStream[i1];
    InStream[i1] := InStream[i2];
    InStream[i2] := temp;
  end;
  {визуализация начального состояния}
  writeln('Before:');
  ShowState(InStream, OutStream, RailwayDeadlock, Nin, Nout, Nd);
  {решение}
  { - 1-й вагон сразу отправляем в выход}
  MovePassBy(InStream, OutStream, RailwayDeadlock, N, Nin, Nout, Nd);
  while (Nin > 0) or (Nd > 0) do
  begin
    {проверяем возможность взять вагон из тупика}
    if Nd > 0 then
      if RailwayDeadlock[Nd] <> OutStream[Nout] then
      begin
        MoveOut(InStream, OutStream, RailwayDeadlock, N, Nin, Nout, Nd);
        continue;
      end;
    {проверяем возможность взять вагон из входного потока}
    if Nin > 0 then
      if InStream[2 * N - Nin + 1] <> OutStream[Nout] then
      begin
        MovePassBy(InStream, OutStream, RailwayDeadlock, N, Nin, Nout, Nd);
        continue;
      end
      else
      begin
        MoveIn(InStream, OutStream, RailwayDeadlock, N, Nin, Nout, Nd);
        continue;
      end;
    break;{в случае ошибки}
  end;
  {вывод результатов}
  writeln('After:');
  ShowState(InStream, OutStream, RailwayDeadlock, Nin, Nout, Nd);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2015, 21:08
Помогаю со студенческими работами здесь

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

Составить новый массив так, чтобы чередовались положительные и отрицательные числа
Известно, что в массиве а(16) кол-во отрицательных элементов равно кол-ву положительных. Составить новый массив так, чтобы ...

Сформировать вектор так, чтобы в нем чередовались положительные и отрицательные элементы из матрицы
Дана квадратная матрица порядка n(n=10).Сформировать вектор x так, чтобы в нем чередовались положительные и отрицательные элементы из...

Преобразовать файл так, чтобы два положительных числа чередовались с двумя отрицательными
Дан файл, число компонент которого кратно 4. Файл состоит из целых чисел не равных нулю, число положительных компонентов файла равно числу...

Поменять регистры букв в тексте так чтобы буквы верхнего и нижнего регистров чередовались
Ваша программа получает на ввод строку и два числа: A и B. Вы должны поменять регистры букв в тексте так чтобы буквы верхнего и нижнего...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru