Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2013, 22:08   #1
Lizoveta
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 44
По умолчанию Pascal, очередь и стек

Добрый вечер! Очень прошу! Помогите с программой! А то завтра сдавать..
Она должна работать и для очереди и для стека..
В очередной раз редактирую...т.к. проблема уже в другом.
Почему когда я в предложенном "меню" выбираю удалить..он ничего не показывает, хотя должен выдать видоизмененный список..А когда пытаюсь добавить, то выводит 1 и добавленное слово..А должен опять таки либо слово и потом весь список..либо вообще весь список и в конце слово.
Объясните, пожалуйста почему он так поступает!

Код:
uses crt;
type pt=^man;
     man=record
         name:  string[20];
         next: pt;
     end;
var x,y,z,k,k2,kz,kz2,ky,ky2: integer;
    str,str2,s,s2: string[20];
    temp,head,temp2,head2 :pt;
    que_h, que_t: pt;      {for queue}
    st_h, st_t  : pt;         {for stack}




procedure add_first(s: string);         {Add for stack}
var vrem: pt;
begin
     new(vrem);
     vrem^.name:=s;
     vrem^.next:=temp;
     temp:=vrem;
end;

function delet_last: string;             {Delet for stack}
var vrem: pt;
begin
     vrem:=temp;
     delet_last:=vrem^.name;
     temp:=vrem^.next;
     dispose(vrem);
end;

procedure add_last(s: string);      {Add for queue}
begin
      if head2=nil then
      begin
           new(head2);
           head2^.name:=s;
           head2^.next:=nil;
           temp2:=head2;
      end
      else
      begin
           new(temp2^.next);
           temp2:=temp2^.next;
           temp2^.name:=s;
           temp2^.next:=nil;
      end;
end;

function delet_first: string;              {Delet for queue}
var vrem2: pt;
begin
     vrem2:=head2;
     delet_first:=vrem2^.name;
     head2:=vrem2^.next;
     dispose(vrem2);
end;

function empty_st: boolean;               {proverka na pustotu dlya steka}
begin
     empty_st:=temp=nil;
end;

function empty_que: boolean;              {proverka na pustotu dlya oheredi}
begin
     empty_que:=head=nil;
end;

begin
clrscr;
     writeln('Hi! I am spisok! Do you prefer STACK or QUEUE?');
     writeln('IF you choose STACK then write "1" ; IF you choose QUEUE then write "2" ');
     readln(x);
     clrscr;

     {stek}
     if x=1 then
     begin
          writeln('Hi! I am stack. Write me something, please :)');
          head:=nil; temp:=nil; s:='';
          repeat
                write('???'); readln(s);
                if s<>'' then
                add_first(s);
          until s='';
          k:=0;

          while not empty_st do
          begin
               writeln(k+1,' ',delet_last);
               k:=k+1;

          end;

          writeln('Choose the need ansew and write it: ');
          writeln('1) Add first element');
          writeln('2) Delet last element');
          readln(y);

          if y=1 then
          begin
               readln(str);
               add_first(str);
               ky:=0;

               while not empty_st do
               begin
                    writeln(ky+1,' ',delet_last);
                    ky:=ky+1;
               end;

          end;

          if y=2 then
          begin
               ky2:=0;

               while not empty_st do
               begin
                    if ky2=0 then delet_last;
                    writeln(ky2+1,' ',delet_last);
                    ky2:=ky2+1;
               end;

          end;
     end;

     {ohered}
     if x=2 then
     begin
          writeln('Hi! I am queue. Write me something, please :)');

          head2:=nil; temp2:=nil; s2:='';
          repeat
                write('???'); readln(s2);
                if s2<>'' then
                add_last(s2);
          until s2='';
          k2:=0;

          while not empty_que do
          begin
               writeln(k2+1,' ',delet_first);
               k2:=k2+1;
          end;


          writeln('Choose the need ansew and write it: ');
          writeln('1) Add last element');
          writeln('2) Delet first element');
          readln(z);

          if z=1 then
          begin
               readln(str2);
               add_last(str2);
               kz:=0;

               while not empty_que do
               begin
                    writeln(k+1,' ',delet_first);
                    kz:=kz+1;
               end;
          end;
          if z=2 then
          begin
               kz2:=0;

               while not empty_que do
               begin
                    if kz2=0 then delet_first;
                    writeln(kz2+1,' ',delet_first);
                    kz2:=kz2+1;
               end;
          end;
     end;


end.

Последний раз редактировалось Lizoveta; 23.10.2013 в 23:12.
Lizoveta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек и очередь Кротяка Общие вопросы C/C++ 1 12.08.2014 18:51
заменить стек на очередь Карина1470 C# (си шарп) 1 14.09.2013 16:49
Pascal (turbo) Динамическая память (список, очередь, стек) Trol_ko Помощь студентам 5 14.09.2011 13:27
[Pascal] Создать очередь и скопировать в стек go.d_bq Помощь студентам 4 17.05.2011 23:23
Pascal Множества, стек, списки, очередь. RrR5 Помощь студентам 4 26.01.2009 15:00