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

Free Pascal

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.61
diliana
93 / 26 / 2
Регистрация: 19.05.2009
Сообщений: 138
#1

Динамические списки - Free Pascal

19.05.2009, 22:51. Просмотров 3801. Ответов 33
Метки нет (Все метки)

Приветики всем.

Мое задание - реализовать добавление элементов в список А и удаление их из списка А в список Б, с возможность просмотра текущего состояния списков.
Я уже кое-что сделала, но больше никак не могу.
Миленькие мои програмисты, помогите пожалуста бедной студентке доделать задание. Очень вас прошу.

вот что я смогла сделать

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
program Laba_List;
 
Type
{обьявление списка}
  plist = ^tl;
  tl = record
  next : plist;
  data: integer;
  end;
 
Var
  head: plist;
  cur: plist;
  x: integer;
  key: char;
 
 
{Просмотр списка1}
procedure ScanList;
var  t: plist;
begin
  writeln ('Prosmotr spiska');
  writeln;
  t := Head;
  while t <> nil do begin
    write(t^.Data, ' ');
    t := t^.Next;
  end;
writeln;
writeln;
end;
 
 
{добавление элемента в список1}
procedure AddList;
var t : plist;
begin
  Write ('Dobavit element: ');
  Readln (x);
  New(t);
  t^.Data := x;
  t^.Next := nil;
  if Head = nil then Head := t
   else cur^.next := t;
  cur := t;
  Writeln ('Dobavlen: ',t^.Data);
  Writeln;
end;
 
 
{Просмотр списка2}
procedure ScanList2;
begin
end;
 
{добавление элемента в список2}
procedure AddList2;
begin
end;
 
 
{удаление элемента из списка1 в список2}
procedure DelList;
var t: plist;
begin
 if Cur <> nil then begin
 if Cur = Head then begin
 Head := Head^.Next;
 Writeln ('Udalen ',Cur^.data);
 dispose(Cur);
 Cur := Head;
 end else  begin
 t := Head;
 while t^.Next <> Cur do
  t := t^.Next;
  t^.Next := Cur^.Next;
  Writeln ('Udalen ',Cur^.data);
  dispose(Cur);
  Cur := t;
   end;
 end;
end;
 
 
BEGIN
 Head:=nil;
 Repeat
 Writeln ('===================');
 Writeln ('PROGRAM List');
 Writeln ('===================');
 Writeln ('1: Dobavit element v spisok-1');
 Writeln ('2: Udalit element v spisok-2');
 Writeln ('3: Prosmotr spiska-1');
 Writeln ('4: Prosmotr spiska-2');
 Writeln ('0: Exit');
 Writeln ('====================');
 Readln (key);
 case key of
   '1': AddList;
   '2': DelList;
   '3': ScanList;
   {'4': ScanList2;}
  end;
   until key ='0';
 END.
Добавлено через 10 часов 6 минут 20 секунд
Неужели мне никто не поможет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2009, 22:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамические списки (Free Pascal):

Динамические списки - Free Pascal
Привет! Вот задание: -новый элемент Е в начало списка L, упорядоченного по неубыванию; -добавляет в конец списка L1 все элементы списка...

Ссылки, списки, динамические структуры данных - Free Pascal
Здравствуйте, помогите пожалуйста. Построить список символов, содержащий входной текст. Написать программу, которая: Печатает текст из...

Динамические списки. Что нужно добавить, чтобы текст из внешнего файла не делился на строки? - Free Pascal
Program Iluha; uses crt; type sSpis = ^rSpis; rSpis = record S : String; Next : sSpis; end; var First, Cur, Last : sSpis; ...

Динамические списки - Pascal
Помогите, пожалуйста. Мне только эта прога и CRT остались (в другой теме). Создать в динамической памяти двухсвязный линейный список...

динамические списки - Pascal
описать две процедуры в списке L из каждой группы подряд идущих равных элементов оставляет только один; находит среднее...

Динамические списки - Pascal
Помогите решить вот такую задчу! Разделить упорядоченный список на два по заданному значению ключа: второй список должен начинаться с...

33
diliana
93 / 26 / 2
Регистрация: 19.05.2009
Сообщений: 138
22.05.2009, 14:21  [ТС] #31
Цитата Сообщение от lexus_ilia Посмотреть сообщение
Save Save
это из-за невнимательности

Цитата Сообщение от lexus_ilia Посмотреть сообщение
А закрывается программа потому что где у тебя все остальные процедуры ? Ты сначало список создай, а потом только его сохраняй.
Я все делала с полной программой, так как ты написал, но не идет, потом немного переделала, но тоже не идет.
в общем код-то компилиться, но - списки А и Б не сохраняются в файле my.dat и соответственно не загружаются из файла.
Я в отчаянии, не понимаю, что же нужно делать
Пожалуста допиши кусочек кода, мне надо сдать эту работу преподу, а потом все отдельно разберем (в спокойной обстановке ), мне обязательно надо будет разобраться в этом.


вот последний вариант полного кода

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
program Qu_Laba_List;
 
Type
  plist = ^tl;
  tl = record
  next : plist;
  data: integer;
  end;
TypList = file of integer;{типизированный файл}
 
Var  //глобальные переменные
  HeadA,curA: plist;
  HeadB,curB: plist;
  key: char;
  CurX:integer;
  A: TypList;
  startX: plist;
  NF:string;
 
 
procedure ScanList(curTmp ,HeadTmp: plist);
begin
  writeln ('Prosmotr spiska');
  writeln;
  if HeadTmp = nil then
    writeln ('Pustoy spisok')
  else
  begin
    curTmp := HeadTmp;
    while curTmp <> nil do
    begin
      write(curTmp^.Data, ' ');
      curTmp := curTmp^.Next
    end;
    writeln;
    writeln
  end;
  writeln;
end;
 
procedure AddList(var curTmp,HeadTmp: plist;p:boolean);
var
  temp:plist;
  x: integer;
begin
  if p then
  begin
    Write ('Dobavit element: ');
    Readln (x)
  end
  else
    Write('V spisok2 dobavlen element ' , CurX, ' YdaleNNbli uz pervogo spiska');
  New(temp);
  if p then temp^.Data := x
   else  temp^.Data:=CurX;
  temp^.Next := nil;
  if HeadTmp = nil then
  begin
    HeadTmp := temp;
    curTmp:=HeadTmp
  end
  else  curTmp^.next := temp;
  curTmp := temp;
  if p then Writeln ('Dobavlen: ',curTmp^.Data);
  Writeln;
end;
 
 
procedure DelList(var t1,t2,Headt1,Headt2: plist);
var
  temp:plist;
begin
  if Headt1 = nil then
  begin
    Writeln('cnicok nycT')
 end
  else
    if t1 = HeadA then
    begin
      HeadA := HeadA^.Next;
      Writeln ('Udalen ',t1^.data);
      CurX:=t1^.data;
      dispose(t1);
      t1 := HeadA
    end
    else
    begin
      temp := t1;
      t1:=HeadA;
      while t1^.Next <> temp do
        t1:= t1^.Next;
      t1^.next:=temp^.next;
      CurX:=temp^.data;
      Writeln ('Udalen ',temp^.data);
      dispose(temp)
    end;
  AddList(curB,HeadB,false);
end;
 
 
{сохранение структуры во внешнем файле}
Procedure Save (var f: TypList; start: plist);
begin
  Writeln('Saving file');
  assign(f, 'c:\my.dat'); {Вот так сделала, вроде надо так делать обьяснял нам препод}
  reset(f);
  while start <> nil do
  begin
  write(f, start^.data);
  start := start^.next;
  end;
  close(f);
end;
 
{загрузка структуры из внешнего файла}
Procedure Load (var f: TypList; start: plist);
var
   temp:plist;
Begin
  Writeln ('Loading file');
  While start <> nil do  {free memory}
  temp:= start^.next;
  dispose (start);
  start:= temp;
  Reset (f);
  While not eof(f) do begin
  read (f, start^.data);
  end;
End;
 
Begin
 HeadA:=nil; curA:=nil;
 HeadB:=nil; curB:=nil;
 CurX:=0;
 
 Repeat
   Writeln ('============================');
   Writeln ('PROGRAM List');
   Writeln ('============================');
   Writeln ('1: Dobavit element v spisok-1');
   Writeln ('2: Udalit element v spisok-2');
   Writeln ('3: Prosmotr spiska-1');
   Writeln ('4: Prosmotr spiska-2');
   Writeln ('5: Save');
   Writeln ('6: Load');
   Writeln ('0: Exit');
   Writeln ('============================');
   Readln (key);
   case key of
       '1': AddList(curA,HeadA,true);
       '2': DelList(curA,curB,HeadA,HeadB);
       '3': ScanList(curA,HeadA);
       '4': ScanList(curB,HeadB);
       '5': Save (A, startX);//..фактические параметры
       '6': Load (A, startX);
 
   end;
 until key ='0';
End.
0
lexus_ilia
3050 / 710 / 34
Регистрация: 24.09.2008
Сообщений: 1,531
22.05.2009, 23:35 #32
Начнём с того что Ты пишешь в Делфи там процедура открытия типизированного файла называется assignFile
Короче я переделывать не буду, т.к. ты пишешь на Делфях. Изучай специфику Делфи.
З.Ы. у меня у самого времени "в обрез".
0
diliana
93 / 26 / 2
Регистрация: 19.05.2009
Сообщений: 138
23.05.2009, 01:52  [ТС] #33
Цитата Сообщение от lexus_ilia Посмотреть сообщение
Начнём с того что Ты пишешь в Делфи там процедура открытия типизированного файла называется assignFile
Это я знаю, но и с assign все отлично работает.

Цитата Сообщение от lexus_ilia Посмотреть сообщение
Короче я переделывать не буду, т.к. ты пишешь на Делфях.
Ты меня не понял, переделывать ничего не надо, все что нужно я доделываю сама ( с учетом специфики), мне нужно просто дописать процедуры Save и Load, чтобы они были работоспособными...Просто я пока не могу одна это сделать...

Цитата Сообщение от lexus_ilia Посмотреть сообщение
З.Ы. у меня у самого времени "в обрез".
я поняла, что ты мне больше не поможешь?
0
lexus_ilia
3050 / 710 / 34
Регистрация: 24.09.2008
Сообщений: 1,531
24.05.2009, 17:01 #34
Цитата Сообщение от diliana Посмотреть сообщение
я поняла, что ты мне больше не поможешь?
Начёнм с того, что это ничего не значит, а значит лишь то, что у меня у самого времени очень мало (я тоже студент, и у меня тоже есть долги, а совсем скоро сессия, вот что это значит).
0
24.05.2009, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2009, 17:01
Привет! Вот еще темы с ответами:

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

Динамические списки - некорректный вывод - Pascal
Здравствуйте господа. Спасибо вашему форуму и всем в частности, многое почерпнул тут и не возникало необходимости задавать &quot;глупые...

Динамические структуры данных. Списки - Pascal
С клавиатуры вводится последовательность символов. Построить из них список. Вывести символы списка в обратном порядке. Добавить после...

Динамические структуры данных: списки - Pascal
Искал манул, не нашел путного ничего... Суть задачи такова &quot;Написать процедуру, которая вставляет новый элемент Е, после первого элемента...


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

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

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