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

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

11.05.2015, 13:08. Показов 1218. Ответов 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
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru