IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Создание класса очереди
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Опять классы... 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.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


на будущее: существует отдельный раздел 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.


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.10.2020 20:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name