Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Falesko
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
#1

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

23.05.2011, 20:01. Просмотров 256. Ответов 0
Метки нет (Все метки)

Задача: ЕСть список, его элементами является последовательность записей о вагонах(тип и номер). Типов 2 (а и б), нужно составить список в котором будут эти вагоны расставлены с чередованием.
аааббб - абабаб

Алгоритм я составил, но вот с реализацие немного налажал.
Алгорит следующий. Первый вагон сразу в результирующий список.
Когда из первого списка считывается инфа то тип сравнивается с типом в другом списке и если совпадает то вагон записывается в дополнительный список. Если не совпало то дописывается в результирующий список, затем проверяется доп список и если он не пуст то от туда в результирующий список берётся 1 элемент, который затем удаляется из доп списка.

Вот программа, ЕСли влом читать всю прогу то найдите Procedure sort(head:tp; var head1:TP); там вся загвоздка=(
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
Program lab_13;
uses crt;
Type Tinf=integer;
     tinf2=string;
     TP=^Telem;
     Telem=Record
                 tip:tinf2;
                 inf:Tinf;
                 pSled:TP
           End;
Procedure ramki (x1,y1,x2,y2,cf,ct:integer; zag:string);
 begin
window(x1,y1,x2,y2);
textbackground(cf);
clrscr;
textcolor(ct);
writeln(zag);
end;
Procedure Init(Var head:TP);
 
Begin
      head:=NIL
End;
 
Procedure InSpN(infEl:tinf2; infel2:Tinf; Var head:TP);
 
Var pn:TP;
Begin
      New(pn);
      pn^.tip:=infEl;
      pn^.inf:=infEl2;
      pn^.pSled:=head;
      head:=pn
End;
 
Procedure SozdSpN(Var head:TP);
 
Var s:integer;
s1:string;
Begin
      Init(head);
      WriteLn('тип вагона А или В ');
      WriteLn('Признак конца ввода с  ');
      Readln(s1);
      s:=1;
      while s1<>'c' do begin
             InSpN(s1,s,head);
             Readln(s1);
             s:=s+1;
                    end;
      ReadLn
End;
 
Procedure ProsmSp(head:TP);
 
 
Begin
      If head=NIL
      Then Begin
         WriteLn('Список пуст!');
         Write('Нажмите Enter ->');
         ReadLn; Exit;
 
           End;
 
 
      While head<>NIL
      Do Begin Write(head^.tip,'-',head^.inf,' ');
               head:=head^.pSled
         End;
      WriteLn
End;
Procedure OutSpN(Var head:TP);
Var pu:TP;
Begin
  If head<>NIL
  Then Begin
         pu:=head;
         head:=head^.pSled;
         Dispose(pu);
       End;
End;
 
 
Procedure sort(head:tp; var head1:TP);
 
Var pt,pt1,pt2,head2:TP;
Begin
 
      WriteLn('После переобразования:');
      InSpN(head^.tip,head^.inf,head1);
      head:=head^.pSled;
      While head<>NIL
      Do Begin IF head^.tip=head1^.tip then begin
                                                 InSpN(head^.tip,head^.inf,head2);
                                                 head2:=head2^.pSled;
                                            end
                            else begin
                                  InSpN(head^.tip,head^.inf,head1);
                                  head1:=head1^.pSled;
                                  If head2<>NIL then begin
                                                       InSpN(head2^.tip,head2^.inf,head1);
                                                       OutSpN(head);
                                                       head2:=head2^.pSled;
                                                     end;
                                 end;
               head:=head^.pSled;
      End;
 
End;
 
Var
        zag: string;
        y1,x1,x2,y2,cf,ct:byte;
      head,head1,head2:TP;
Begin
       clrscr;
       textbackground(black);
       clrscr;
       x1:=2; y1:=2; x2:=20; y2:=20;
       ct:=18;
       cf:=1;
       zag:='Задание:Создать';
       ramki(x1,y1,x2,y2,cf,ct,zag);
       writeln('список. + элементы');
       writeln('В один список');
       writeln('Остальные в другой.');
       x1:=48; y1:=2; x2:=76; y2:=20;
       zag:='Ответ';
       ramki(x1,y1,x2,y2,cf,ct,zag);
       x1:=24; y1:=2; x2:=44; y2:=20;
       zag:='Создание списка';
       ramki(x1,y1,x2,y2,cf,ct,zag);
       SozdSpN(head);
       Writeln('После создания '); ProsmSp(head);
       x1:=48; y1:=2; x2:=76; y2:=20;
       zag:='Ответ:';
       ramki(x1,y1,x2,y2,cf,ct,zag);
       sort(head,head1);
       ProsmSp(head1);
       readln;
End.
Вот эта строка InSpN(head^.tip,head^.inf,head1); вполне нормально добавляет инфу в список 1 (результурующий), но по какимто причинам абсолютно такая же строчка
InSpN(head^.tip,head^.inf,head2); отказывается делать это со списком 2. ДА и вообще создаётся впечатление что всё что касается списка с head2 не работает...
Где я ошибся?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 20:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамические структуры. (Pascal ABC):

Динамические структуры данных - Pascal ABC
Очень прошу помочь с задачкой, бьюсь с ней уже который день... Заранее большое спасибо!! Дано натуральное число n, действительные...

Ссылки, списки, динамические структуры данных - Pascal ABC
Написать программу которая печатает текст из первых букв всех слов списка. Help me!

Ссылки, списки, динамические структуры данных - Pascal ABC
&quot;Написать программу, которая в списке переставляет местами первое и последнее слово&quot; п.с. вообще не понимаю о чём речь, нужен...

Динамические структуры данных. Спроектировать алфавитный указатель.каждый компонент списка содержит слово и номер страницы - Pascal ABC
Разработать программу с использованием динамических структур данных Спроектировать алфавитный указатель.каждый компонент списка...

динамические структуры - Pascal
Привет! помогите написать программу, мне одну задачу осталось сдать, для зачета(((; Создать список, просмотреть его содержимое, вставить...

Динамические структуры - Pascal
Здравствуйте, помогите с программой (по возможности объяснить) как вывести созданную очередь на экран Задание: Программа: ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 20:01
Привет! Вот еще темы с ответами:

динамические структуры - Pascal
помогите Написать программу, в которой создаются n записей для хранения целых чисел. Все записи указывают одна на другую. Вывести все числа...

динамические структуры - Pascal
составить программу решения уравнения ax+b=0

Динамические структуры данных. Организация данных в списковые структуры - Pascal
Написать программу вставки нового элемента в список за некоторым заданным по- рядковым номером элементом (вставка осуществляется не в...

динамические структуры данных - Pascal
Прошу помочь в решении задачи.. Слейте два упорядоченных неповозрастанию списка в один (также упорядоченный неповозрастанию):построив...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru