iDark
1

Курсач, тема: линейные списки

17.09.2012, 18:52. Показов 1304. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Текст помощи для некоторой программы организован как линейный список. Каждая компонента текста помощи содержит термин (слово) и текст, содержащий пояснение к этому термину. Количество строк текста, относящихся к одному термину, от одной до пяти.
составить программу, которая обеспечивает:
-начальное формирование текста помощи
-вывод текста помощи
-вывод поясняющего текста для заданного термина
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

Не понимаю самого задания, учусь на заочке, списки еще не проходили и материал не дали... Не знаю даже с чего начать, где искать..
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2012, 18:52
Ответы с готовыми решениями:

Линейные списки
Помогите пожалуйста!!! Дан линейный список, содержащий имена,фамилии и отчества. Отсортировать...

Линейные списки
Имеется линейный список с последовательным хранением , элементами которого являются окружности....

Линейные списки
Вечер добрый! Видимо не далась мне тема про списки. Прошу помощи: Список вводится через...

Списки. Линейные массивы
Дано линейную таблицу A, которая состоит из целых чисел. Записать алгоритм и составить программу,...

2
13105 / 5886 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
18.09.2012, 11:40 2
Лучший ответ Сообщение было отмечено как решение

Решение

В виде GUI приложения:
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, Dialogs;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Memo3: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
type
  //Тип основных данных списка.
  TData = record
    Name, Desc : String;
  end;
  //Тип указателя на элемент списка.
  TPElem = ^TElem;
  //Тип элемента списка.
  TElem = record
    Data : TData;
    PNext : TPElem;
  end;
  //Тип, описывающий однонаправленный список.
  TDynList = record
    PFirst : TPElem; //Указатель на первый элемент списка.
    PLast : TPElem; //Указатель на последний элемент списка.
  end;
 
var
  gList : TDynList;
 
//Процедуры для работы со списком.
 
//Инициализация списка. Внимание! Эту процедуру можно выполнять только
//в отношении пустого списка. Иначе - будут утечки памяти.
procedure Init(var aList : TDynList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
//Добавление элемента в конец однонаправленного списка.
procedure AddL(var aList : TDynList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
end;
 
//Удаление однонаправленного списка из памяти и инициализация.
procedure ListFree(var aList : TDynList);
var
  PNext, PDel : TPElem;
begin
  if aList.PFirst = nil then Exit;
 
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
//Распечатка однонаправленного списка.
function ListToStr(const aList : TDynList) : String;
var
  PElem : TPElem;
  i : Integer;
begin
  Result := '';
  if aList.PFirst = nil then begin
    Result := 'Список пуст.';
    Exit;
  end;
 
  PElem := aList.PFirst;
  i := 0;
  while PElem <> nil do begin
    Inc(i);
    if i > 1 then Result := Result + #13#10'-----'#13#10;
    Result := Result + PElem^.Data.Name + #13#10 + PElem^.Data.Desc;
    PElem := PElem^.PNext;
  end;
end;
 
//Поиск элемента в списке. Поиск производится по значению aName.
function FindElem(const aList : TDynList; const aName : String; var aData : TData) : Boolean;
var
  PElem : TPElem;
  S : String;
begin
  Result := False;
  S := AnsiUpperCase(aName);
  PElem := aList.PFirst;
  while PElem <> nil do begin
    if AnsiUpperCase(PElem^.Data.Name) = S then begin
      aData := PElem^.Data;
      Result := True;
      Break;
    end;
    PElem := PElem^.PNext; //Переход к следующему элементу списка.
  end;
end;
 
//Обработчики нажатий кнопок на форме.
 
//Добавление элемента в список.
procedure TForm1.Button1Click(Sender: TObject);
var
  Data : TData;
begin
  Data.Name := Edit1.Text;
  Data.Desc := Memo1.Text;
  AddL(gList, Data);
end;
 
//Поиск элемента в списке.
procedure TForm1.Button2Click(Sender: TObject);
var
  Data : TData;
begin
  Memo2.Clear;
  if FindElem(gList, Edit2.Text, Data) then
    Memo2.Text := Data.Desc
  else
    ShowMessage('Элемент не найден.');
end;
 
//Распечатка всего списка в Мемо3.
procedure TForm1.Button3Click(Sender: TObject);
begin
  Memo3.Text := ListToStr(gList);
end;
 
//Удаление списка из памяти (очистка списка).
procedure TForm1.Button4Click(Sender: TObject);
begin
  ListFree(gList);
  ShowMessage('Список удалён из памяти.');
end;
 
initialization
  //Инициализация списка в начале работы.
  Init(gList);
 
finalization
  //Удаление списка из памяти в конце работы.
  ListFree(gList);
 
end.
Вложения
Тип файла: rar WorkWithDynList.rar (173.6 Кб, 11 просмотров)
1
iDark
18.09.2012, 19:05 3
Спасибо большое! теперь буду разбираться
18.09.2012, 19:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2012, 19:05
Помогаю со студенческими работами здесь

Однонаправленные линейные списки
Помогите с одноправленным линейным списком.Происходит ошибка на этапе выполения.

Линейные списки \ Реализация некоторых функции
Прошу помощи : Имеется линейный список с последовательным хранением , элементами которого являются...

Delphi линейные списки и записи,не могу разобраться
Создать запись &quot;Станция&quot; (хранит номер или название). Создать запись &quot;Поезд&quot; (хранит номер поезда,...

Линейные списки(перевести вроде с Си++ на Delphi [console application])
Здравствуйте, переведите, пожалуйста, программу с вроде Си ++ на Delphi; Си еще не проходили(((.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru