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

> ВНИМАНИЕ!

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

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

 
 Ответить  Открыть новую тему 
> очередь для символов, +сделать готовые процедурки
сообщение
Сообщение #1


Пионер
**

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

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


теперь вот сел за очередь ( та же задача http://forum.pascal.net.ru/index.php?showtopic=13227 ). Скатал готовый пасс ( тк своей башки на написание не хватит ), но как всегда пока переделывал чёто левое наворотил, проверьте пожалста. Я его описал ...
uses
MyQueue;
var
l,p,t: TQueue;
... вот так, но при обращении к этим переменным (када точечку ставиш smile.gif ) пишет чёто типа не могу откомпилировать пас


Прикрепленные файлы
Прикрепленный файл  MyQueue.pas ( 958 байт ) Кол-во скачиваний: 259


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

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


Гость






У тебя сам myqueue.pas не компилируется, ибо ошибок много smile.gif

Так лучше?


Прикрепленные файлы
Прикрепленный файл  myqueue.pas ( 979 байт ) Кол-во скачиваний: 247
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Кстати, ты бы зашел сюда:
FAQ: ООП

Тут я выкладывал реализации всех основных ДСД (динамических структур данных) через Object-ы...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


ooops smile.gif оч лучше smile.gif
а в фак я защёл сразу, но чёт ваще через объект не понял () я даже не знаю что такое halt(102) smile.gif кста там гдето и вытянул эту очередь smile.gif мнеб тут бы разобраться - вот у нас процедура пуш
Код
Procedure TQueue.Push(var q:TQueue; e: Char);
var z:Tlist;
begin
  new(z);
  z^.info:=E;
  z^.next:=nil;
  If Empty(q) then q.head:=z else q.tail^.next:=z;
  q.tail:=z
end;

вот например a.push(q,e) - e это наш символ, который мы передаём, а что такое q? у меня блин проблемы с описаниями и передачею всегда smile.gif
зы а с очередью всё ок? тоесть в хвост кладём голову вынимаем? а то в инструкции к модулю написано так
Цитата
Procedure OueuePush(var q:TQueue; e:TElem);
поместить в хвост

Function QueuePop(var q:TQueue):TElem;
извлечь из хвоста

или я чёт не догоняю? smile.gif


Сообщение отредактировано: kr3v3tkus -


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






А у тебя, извини модуль нерабочий... Он только компилируется, а работать от этого лучше не станет... Зачем тебе вызывать метод объекта (ну, или класса, не столь важно), и в него же передавать сам экземпляр этого же класса? "Масло масляное"? Это было неудачно переведено с процедурной версии... В смысле, у тебя это и есть процедурная версия, я просто заставил твой модуль компилироваться...

Если тебе надо ООП (а судя по твоему модулю - надо, ибо TQueue определено как класс) - я дал ссылку. Там все нормально работает... Что за привычка - придраться к самым незначащим участкам кода, и не посмотреть, как реализовано все основное? Что тебе с этого Halt? Неужели по смыслу не ясно, что Halt просто прервет выполнение программы? В общем, как знаешь... Хочешь изобретать - изобретай...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


volvo ет я не придирался smile.gif я просто для примера сказал :D а ваще - задание сделать модуль для работы с очередью, я просто не догоняю как его написать и ета каша получилася потому что я пытался делать по примеру модуля стэка который препод давал sad.gif
если можно то дай плз ссылку smile.gif я не кулибин :D


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


упс пардон smile.gif я думал ты сказал дам а не дал smile.gif
кароче чёт сложно для меня sad.gif) я вощем такую фигню накатал, вроде катит
Код
unit MyQueue;

interface

type
PNode = ^Node;
Node = record
     Info:Char;
     Next:PNode;
end;
TQueue = class
   private
     head,tail:PNode;
   public
     function Empty:Boolean;
     procedure Push (Value:Char);
     procedure Pop (var Value:Char);
     constructor Create;
     destructor Destroy; override;
end;

implementation

constructor TQueue.Create;
begin
   inherited;
   head:=nil;
   tail:=nil;
end;

destructor TQueue.Destroy;
var Value:Char;
begin
   while (not Empty) do Pop (Value);
   inherited;
end;

function TQueue.Empty:Boolean;
begin
   Empty := not assigned(head);
end;

procedure TQueue.Push (Value:Char);
var P:PNode;
begin
   new(P);
   p^.info:=value;
   p^.next:=nil;
   if empty then head:=p
   else tail^.next := p;
   tail:=p;
end;

procedure TQueue.Pop (var Value:Char);
var P:PNode;
begin
   if not Empty then
     begin
       value:=head^.info;
       p:=head;
       head:=p^.next;
       if head=nil then tail:=nil;
       dispose(p);
     end;
end;

end.


Сообщение отредактировано: kr3v3tkus -


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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