Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача со стеками!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lion4ik

Вводится строка заканчивающаяся точкой, например SSALK.
вывести её в обратном порядке, используя процедуры стеков.

Помогите решить полностью задачу!
volvo
Ну уж чего-чего, а реализаций стека на форуме хватает... Вот тут, например:

Все о динамических структурах данных.

Читал? Там есть модуль, реализующий 3 основные операции: проверка на пустоту, Push и Pop... С использованием этого модуля программа будет выглядеть, например, так:
uses crt, stack;

var
  ch: telem;
  st: tstack;


begin
  stackinit(st);

  repeat

    ch := readkey;
    write(ch);
    stackpush(st, ch);

  until ch = '.';
  writeln;

  stackpop(st); { <--- Это - если НЕ надо печатать саму точку }
  while not stackempty(st) do begin
    write(stackpop(st));
  end;
  writeln;readln;
end.

(в самом модуле stack.pas надо строчку telem = integer; заменить на telem = char;)

Можно то же самое сделать через рекурсию, в принципе - тоже работа со стеком, только немного в другом смысле.
Lion4ik
Volvo а ты можешь написать мне эту программку с моим условием и с моей СТРОКОЙ SSALK, а то времени вобрез самому понимать полностью. Заранее благодарен!!!!!!!!!!!!!
volvo
А ты запускал то, что я привел? Введешь свою строку, она будет перевернута.

P.S. То, что времени в обрез у тебя - это НЕ мои проблемы...
Lion4ik
Цитата(volvo @ 13.04.2007 11:51) *

А ты запускал то, что я привел?

запускал не работает ch: = readkey;
eror:TYPE mismatch
Tan
Цитата
С использованием этого модуля программа будет выглядеть, например, так:
тебе написали!
Lion4ik
модуль всё скачал вложил в папку с файлом программы как положнно всё...

а в программа не запумскается ch: = readkey;
eror:TYPE mismatch
Tan
Надо в основной программме писать
Uses Modulname;
и не забывай модуль перед этим откомпилировать.
Lion4ik
Цитата(Tan @ 13.04.2007 17:24) *

Надо в основной программме писать
Uses Modulname;
и не забывай модуль перед этим откомпилировать.

Вообщем вот модуль
Unit STACK;
INTERFACE
Type
 TElem = integer; 
 TStack = ^TElement; 
 TElement = record
             info:TElem;
             Next:TStack
            end;
 
 Procedure StackInit(var s:TStack);
 Function StackEmpty(S:TStack):Boolean;
 
 Procedure StackPush(var S:TStack; E:TElem);

 Function StackPop(var S:TStack):TElem;
 {--------------------------------------}

IMPLEMENTATION
 Procedure StackInit(var s:TStack);
 begin
  s:=nil
 end;
 Function StackEmpty(S:TStack):Boolean;
 begin
  StackEmpty:=(S=NIL);
 end;
 Procedure StackPush(var S:TStack; E:TElem);
 var
  z:TStack;
 begin
  new(z);
  z^.next:=s;
  Z^.INFO:=E;
  s:=z;
 end;
 Function StackPop(var S:TStack):TElem;
 const errorcode=255;
 var z:TStack;
 begin
  If StackEmpty(S) then
  begin

   Halt(errorcode);
  end else
  begin
   z:=s;
   s:=s^.next;
   stackPop:=z^.info;
   dispose(z)
  end
 end;
end.



А ВОТ ПРОГРАМММА!

uses crt, stack;

var
  ch: telem;
  st: tstack;


begin
  stackinit(st);

  repeat

    ch := readkey;
    write(ch);
    stackpush(st, ch);

  until ch = '.';
  writeln;

  stackpop(st);   while not stackempty(st) do begin
    write(stackpop(st));
  end;
  writeln;readln;
end.


М
ну неужели поставить теги так сложно? предупредила же. и в правилах это есть...
мисс_граффити


....................
Теперь обьясните что делать???

Откомпилировал я модуль, поставил Destanitiоn Disk как в инструкции
в программе uses crt, stack/ это уже есть или как помогите?
мисс_граффити
когда ж люди читать научатся....
Тебе что сказали сделать?
Цитата
(в самом модуле stack.pas надо строчку telem = integer; заменить на telem = char;)


а ты что делаешь?
Цитата
TElem = integer;


и вообще, код надо писать в тегах code!
Lion4ik
я читать умею и это я сделал всё равно тоже самое.....в самом модуле я поменял целоее на чар!!!!

Добавлено через 5 мин.
Цитата(Lion4ik @ 13.04.2007 18:41) *

я читать умею и это я сделал всё равно тоже самое.....в самом модуле я поменял целоее на чар!!!!


Ну что кто поможет??? ведь я знаю вы знаете....
всё поменял указал ....но всё равно EROR: 26
мисс_граффити
после этого модуль перекомпилировал?
Lion4ik
Цитата(мисс_граффити @ 13.04.2007 18:59) *

после этого модуль перекомпилировал?

да мисс граффити перекомпилировал....
ПРодемонстрируй пожалуста как указывать модуль ведь в uses есть уже stack и сам модуль называется STACK...единств что приходит в голову а так незнаю что и делать
Tan
Если ты его объявил, откомпилировал и основная программа запустилась, значит всё сделал верно.
Lion4ik
Цитата(Tan @ 13.04.2007 19:14) *

Если ты его объявил, откомпилировал и основная программа запустилась, значит всё сделал верно.

ну вот я показал модуль и проограмму .....Тан покажи пожалуйста что в программе дописать куда обьявить......
hiv
Цитата(Lion4ik @ 13.04.2007 19:05) *
да мисс граффити перекомпилировал....
Наша Мисс права - все работает! Сделай все еще раз сначала как она тебе говорит. Замени TElem = integer; на TElem = char; в модуле STACK.PAS
А программу Volvo не трогай!!! Там менять нечего, он все за тебя сделал.
Хау! Удачи.
Lion4ik
Цитата(hiv @ 13.04.2007 20:28) *

Наша Мисс права - все работает! Сделай все еще раз сначала как она тебе говорит. Замени TElem = integer; на TElem = char; в модуле STACK.PAS
А программу Volvo не трогай!!! Там менять нечего, он все за тебя сделал.
Хау! Удачи.

получилось!!!
теперь запускает программу куда написать свою строку чтобы он её наоборот выдавал?
мисс_граффити
у тебя большой выбор, куда вводить строку?
Lion4ik
Цитата(мисс_граффити @ 13.04.2007 21:40) *

у тебя большой выбор, куда вводить строку?

выбор ммм наверное нет у меян голова вообще после сегодня не варит....
SSLAK потом точка
KLASS и без точки такое возможно??? и куда это вести??? МИИссс помогиииии
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.