1 Востаннє редагувалося User 298 (04.11.2013 17:43:59)

Тема: Робота із стеком символів

Всім доброго дня :)  Допоможіть будь ласка доробити задачу:

--Використовуючи модуль реалізації стеку символів, скласти підпрограму - "Витягнути n елементів зі стеку"--

Сам модуль я вже маю:
-----------------------------------------------------------------------------------------------

{ Стек символів }
unit ChStack;
 
interface
 
type stack = ^selem;                      { Стек }
     selem  = record                      { Елемент стеку }
                   d: char;
                   next: stack
             end;
 
procedure Init(var s: stack);             { Почати роботу }
function Empty (s: stack): boolean;       { Чи порожній стек? }
procedure Push (var s: stack; c: char);   { Вштовхнути елемент у стек }
function Top (s: stack): char;            { Верхівка стеку }
procedure Pop (var s: stack);             { Забрати верхівку стеку }
 
implementation
 
procedure Init(var s: stack);
 begin
   s := nil
 end;
 
function Empty (s: stack): boolean;
 begin
   Empty:= s=nil
 end;
 
procedure Push (var s: stack; c: char);
 var p: stack;
 begin
   new(p); p^.d := c; p^.next := s;
   s := p
 end;
 
function Top (s: stack): char;
 begin
   if s = nil then begin
     writeln(' Top: Стек порожній'); halt
   end;
   Top := s^.d
 end;
 
procedure Pop (var s: stack);
 var p: stack;
 begin
   if s = nil then begin
     writeln(' Pop: Стек порожній'); halt
   end;
   p:=s; s:= s^.next; dispose(p)
 end;
 
end.

------------------------------------------------------------------------------------------------
А от підпрограму не можу скласти (ніколи не розумілась а програмуванні)
Тому звертаюся до вас за допомогою. Буду дуже вдячна!

Bartash: код слід брати у теги [ code ].

2

Re: Робота із стеком символів

А от підпрограму не можу скласти (ніколи не розумілась а програмуванні)

Ну хоч щось, хоча б трішки ви можете написати? Навіть якщо воно буде на 100% неправильно, викладіть його сюди, а ми прокоментуємо.

Подякували: v.pro1

3 Востаннє редагувалося v.pro (04.11.2013 22:06:23)

Re: Робота із стеком символів

program Proekt1;
uses ChStack;
const n=42;
var s: stack; c: char;
begin
     Init(s);
     read(c);
     for i:=1 to n do
     Push(s,c);
     read (c);

Ну я думала, що спочатку ми вводимо послідовність символів c (n можна константою або також через readln), потім заповнюємо порожній стек. А далі n разів застосовуємо процедуру Pop, враховуючи помилку при size(c)<n. Якось так
Просто не втямлю, як це можна перекласти на Pascal)

4

Re: Робота із стеком символів

1. Завдання - скласти підпрограму, тобто процедуру або функцію.
2. Вводити ж теж треба в циклі.

     
     for i:=1 to n do begin
       read(c);
       Push(s,c);
     end;
Подякували: v.pro1

5

Re: Робота із стеком символів

Спасибі за допомогу!