Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 13:04   #1
solisoul
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 20
Восклицание Программа для создания толкового словаря. Связанные список. Паскаль.

Нужно создать толковый словарь!!!! Pascale!!!!
1) добавление нового слова в словарь.
2) поиск по слову.
3) удаление слова из словаря.
4) вывод всего словаря в алфавитном порядке с организацией паузы для просмотра и возможностью прерывания просмотра.
заранее спасибо!!!!!!

Код:
program spisok;
{$APPTYPE CONSOLE}
uses
SysUtils;
type PList=^TList;
TList=record
inf:integer;
prior:Plist;
next:Plist
end;

constructor ListCont.Init; //инициализация списка
begin
first:=nil; last:=nil;
end;

function ListCont.countElement(start:Plist): integer; //подсчет количества элементов
var
temp:integer;
begin
temp:=0;
while(start<>nil) do
begin
inc(temp);
start:=start^.next;
end;
countElement:=temp;
end;


function ListCont.GetNextByValue(P:Plist):Pl ist; 
Var S:PList;
i:integer;
begin
if (Exist(P)) then
begin
if p=last then GetNextByValue:=nil
else
begin
s:=p^.next;
GetNextByValue:=S;
end;
end
else GetNextByValue:=nil;
end;
function ListCont.Exist(P:Plist):boolean;
var
start:PList;
flag:boolean;
begin
flag:=false;
start:=first;
while ((start<>nil) and (flag=false)) do
begin
if start=p then flag:=true
else start:=start^.next;
end;
end;


function ListCont.Empty:boolean; //процедура проверки наличия списка
begin
Empty:=(last=nil) and (first=nil);
end;

procedure ListCont.QuickSort(l:integer;r:inte ger); //быстрая сортировка
var
i,j:integer;
X:Plist;
begin
i:=l;
j:=r;
x:=GetByid((l+r) div 2);
repeat
while (GetById(i)^.inf<x^.inf) do inc(i);
while (GetById(j)^.inf>x^.inf) do dec(j);
if (i<=j) then
begin
Swap(i,j);
inc(i);
dec(j);
end;
until (i>j);
if j>l then QuickSort(l,j);
if r>i then QuickSort(i,r);
end;

procedure ListCont.BubbleSort; //пузырьковая сортировка
var
p,q:PList;
i,j,n:integer;
begin
n:=countElement(first);
for i:=2 to n do
begin
for j:=n downto i do
begin
p:=GetById(j-1);
q:=GetById(j);
if p^.inf<q^.inf then
begin
swap(j,j-1);
end;
end;
end;

end;

procedure ListCont.Insert(x:integer); //процедура вставки элементов в конец списка(информационная часть)
var
p:PList;
begin
new(p);
p^.inf:=x;
p^.next:=nil;
if Empty then
begin
first:=p;
first^.prior:=nil;
end
else
begin
last^.next:=p;
p^.prior:=last;
end;
last:=p;
end;

procedure ListCont.Remove(var start:PList); //процедура удаления списка
var
q:Plist;
begin
if Exist(start) then
begin
if start=nil then writeln('List not init')
else
begin
while start<>nil do
begin
q:=start;
start:=start^.next;
dispose(q);
end;
end;
end
else writeln('ne tot spisok');
end;

procedure ListCont.Print_forward(start:PList) ; //процедура печати элементов с первого(начало)
begin
if start=nil then writeln('List not init')
else
begin
while (start<>nil) do
begin
write(start^.inf,' ');
start:=start^.next;
end;
end;
end;
procedure ListCont.Print_back(start:PList); //процедура печати элементов с последнего(начало)
begin
if start=nil then writeln('List not init')
else
begin
while (start<>nil) do
begin
write(start^.inf,' ');
start:=start^.prior;
end;
end;
end;


function ListCont.GetById(i:integer):PList; //получение указателя по индексу(индекс)
var
p:PList;
j:integer;
begin
p:=first;
j:=1;
while ((p<>nil) and (j<>i)) do
begin
p:=p^.next;
inc(j);
end;
if p=nil then GetById:=nil
else if j=i then GetById:=p;
end;

___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.02.2011 в 13:24.
solisoul вне форума Ответить с цитированием
Старый 01.02.2011, 13:06   #2
solisoul
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 20
Восклицание Продолжение

Код:
function ListCont.GetByValue(x:integer):PLis t; //получение указателя по значению(информационное поле)
var
p:PList;
begin
p:=first;
while ((p<>nil) and (p^.inf<>x)) do
begin
p:=p^.next;
end;
if p=nil then GetByValue:=nil
else if p^.inf=x then GetByValue:=p;
end;



procedure ListCont.RemoveAll(var start:PList;x:integer); //процедуру удаления элементов больших по значению(информационное поле)
//если такого значения инф поля нет то список оставлять таким?
var
p,q,t:PList;
begin
p:=first;
t:=GetByValue(x);
if t=nil then writeln('element not find')
else
begin
while (p<>nil) do
begin
if p^.inf > x then //косяк
begin //нашли нужные значения
if p = first then
begin //если удаляем первый элемент
first := p^.next; //то редактируем указатель начала
first^.prior := nil;
//удалить
end
else
if p^.next = nil then p^.prior^.next := nil
else//если последний, то редактируем предпоследний
begin //если где-то в середине
p^.prior^.next := p^.next;//редактируем
p^.next^.prior := p^.prior;//соседнии элементы
end;
q := p; //указатель на удаляемый элемент
p := p^.next;
dispose(q);//удаляем
continue
end;
p:=p^.next;
end;
end;
end;


procedure ListCont.Swap(i,j:integer); //процедура обмена элементов
var
p,q,t:PList;
begin
p:=ListCont.GetById(i);
q:=ListCont.GetById(j);
if ((p<>nil) and (q<>nil)) then
begin
new(t);
t^.inf:=p^.inf;
p^.inf:=q^.inf;
q^.inf:=t^.inf;
end
else writeln('element not find')
end;


function ListCont.GetNext(P:Plist):Plist; //получение значения следующего за текущим
var
max,x,q,start:PList;
flag:boolean;
begin
flag:=false;
writeln('element ',p^.inf);
new(max);
max^.inf:=32767;
start:=first;
while (start<>nil) do
begin
if start^.inf>p^.inf then
begin
if ((start^.inf<max^.inf) and (start^.inf<>p^.inf)) then
begin
max:=start;
flag:=true;
end;

end;
start:=start^.next;
end;
if flag=false then GetNext:=nil
else GetNext:=max;
end;


var
List:ListCont; //список
temp_o,temp_t,i:integer;
temp_list:PList;
flag:boolean;

begin

List.Init; //создание списка

{================================== =================================== ==========
вставка элементов в список и вывод
=================================== =================================== =========}
writeln('output list forward');
List.Print_forward(List.first);
writeln('output list back');
List.Print_back(List.last);

flag:=true;

while (flag) do
begin
writeln('enter data element');
read(temp_o) ;
if temp_o=-1 then flag:=false
else List.Insert(temp_o);
end;

writeln('output list forward');
List.Print_forward(List.first);
//удаление списка
{ writeln;
List.Remove(List.first);
writeln('output list forward');
List.Print_forward(List.first);}
//удаление элементов больше заданной ин части
{ writeln;
writeln('entert data');
readln(temp_o);
List.RemoveAll(List.first,temp_o);
writeln('output list forward');
List.Print_forward(List.first);}
//получение указателя по индексу
{ writeln;
writeln('enter index');
readln(i);
temp_list:=List.GetById(i);
if temp_list=nil then writeln('index not find')
else writeln('data=', temp_list^.inf);}
//получение указателя по значению
{ writeln;
writeln('enter inf');
readln(temp_o);
temp_list:=List.GetByValue(temp_o);
if temp_list=nil then writeln('element not find')
else writeln('data=', temp_list^.inf); }
//получение значения следующего за текущим
{ writeln;
writeln('next value');
temp_list:=List.GetNextByValue(List .first);
if temp_list<>nil then writeln('data=', temp_list^.inf)
else writeln('element not find'); }
//сортировка пузурьком
{ writeln;
writeln('buble sort');
List.BubbleSort;
writeln('output list forward');
List.Print_forward(List.first); }
readln(i);
end.

Последний раз редактировалось Serge_Bliznykov; 01.02.2011 в 13:25.
solisoul вне форума Ответить с цитированием
Старый 01.02.2011, 13:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) что за истерика, что значит "не могу найти ошибку"?!

2) какое отношение приведённый Вами код имеет отношение к Вашей задаче?!
Только то, что там список и тут список?!

3) выдранный Вами кусок кода предполагает ООП - т.е. описание КЛАССА ОБЪЕКТА! А конкрентно, нужно описание класса ListCont... Вы его видите?!

4) а Вам вообще в конечном итоге нужен Паскаль или консольная Delphi программа ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2011, 13:35   #4
solisoul
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 20
По умолчанию

мне нужен паскаль.Из этого исходника предложили переделать под свою задачу!!!!!помогите, зачет не ставят(((((я а паскале плохо соображаю(((((
solisoul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для создания модулей/макетов для КМС LeoN Софт 0 02.12.2010 10:51
алгоритм создания частотного словаря (двумерные массивы) Blueyeska Помощь студентам 1 09.06.2010 17:31
Программа для создания музыки Lemo Софт 7 04.06.2010 06:50
Программа для создания меню для сайта iukash Софт 3 06.06.2009 13:10
Программа для создания блоксхем BLooD Свободное общение 1 11.11.2007 18:17