Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Создание класса очереди

Автор: forMator 14.04.2007 22:38

Опять классы... unsure.gif
Задача: Нужно создать класс очереди.Программа ошибок не выдаёт, но у меня не получается ввести все n элементы, а вводится только первый.. Помогите пожалуйста разобраться с задачей!


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
type pelement=^telement;
telement=record
data:integer;
next:pelement;
end;
tQueue=class
first,last:pelement;
size:integer;
constructor create;
destructor destroy;
override;
procedure add(x:integer); //добавление элемента в очередь
procedure viv(Var x:integer); //вывод
end;
constructor tqueue.create; //метод создания пустой очереди
begin
inherited create;
last:=nil;
size:=0;
end;
destructor tqueue.destroy;//метод уничтожения очереди
Var tmp:pelement;
begin
while last<>Nil do
begin
tmp:=first^.next;
dispose(first);
end;
inherited destroy;
end;
procedure tqueue.add;
Var tmp:pelement;
begin
new(tmp);
tmp^.data:=x;
tmp^.next:=nil;
last:=tmp;
end;
procedure tqueue.viv;
Var tmp:pelement;
begin
if first=nil then writeln('ochered pusta') else begin
x:=first^.data;
tmp:=first;
first:=first^.next;
end;
end;
Var och:tqueue;
i,n,x:integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
write('vvedi n=');readln(n);
for i:=1 to n do begin
write('vvedi x=');readln(x);
och.add(x);
end;
och.viv(x);
write('x=');readln(x);
readln;
end.



Автор: мисс_граффити 14.04.2007 22:54

на будущее: существует отдельный раздел Delphi
переношу тему туда

что касается основного вопроса...

procedure tqueue.add(x:integer);
Var tmp:pelement;
begin
new(tmp);
tmp^.data:=x;
tmp^.next:=nil;
if last<>nil then
last^.next:=tmp
else
first:=tmp;
last:=tmp;
end;


Var och:tqueue;
i,n,x:integer;
tmp:pelement;
begin
och:=tQueue.create;
write('vvedi n=');readln(n);
for i:=1 to n do
begin
write('vvedi x=');readln(x);
och.add(x);
end;
och.viv(x);
tmp:=och.first;
while tmp<>nil do
begin
Writeln(tmp^.data);
tmp:=tmp^.next;
end;
readln;
end.


заполнение/добавление работает.
а вот остальные методы (деструктор, например).... не стала исправлять - подумай сам.