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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 13:15   #1
Настенька..Блонди
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 37
По умолчанию исправте чуток задачку

Разработать алгоритм и программу решения задачи, которая выполняет операции со стеком: формирует стек, извлекает из него элемент.
Люди помогите!!! здесь ток нужно чтоб не извлекало из него элемент, а выводило обратную последовательность элементов стека!!!! просьба по быстрей!!!

Код:
Program Lab16_1; 
Uses Crt; 
Type 
 Exst=^st; 
 st=Record 
    data:integer; 
    next:Exst; 
   end; 
Var 
 i,a:integer; 
 stack:Exst; 
 Flag:boolean; 
Procedure Print(Var u:exst); 
Begin 
 Writeln('Ваш стек'); 
 While u<>nil do 
   begin 
    Write(u^.data,' '); 
    u:=u^.next; 
   end; 
End; 
Procedure WriteStack(Var u:Exst); 
Var 
 x:exst; 
Begin 
 u:=nil; 
 Writeln('Введите элементы стека.Конец ввода -0'); 
 Read(i); 
 While i<>0 do 
  begin 
   New(x); 
   x^.data:=i; 
   x^.next:=u; 
   u:=x; 
   Read(i); 
  end; 
End; 
Procedure ReadStack(Var u:Exst); 
Var 
 x:Exst; 
Begin 
 x:=u; 
 u:=u^.next; 
 Dispose(x); 
End; 
Function Free(Var u:Exst):boolean; 
Begin 
 If u=nil 
  Then 
   Free:=False 
  Else 
   Free:=True; 
End; 
Begin 
 ClrScr; 
 Writeln('Выберите вид работы:'); 
 Writeln('1:Формирование стека'); 
 Writeln('2:Извлечение элемента из стека'); 
 Writeln('0:Выход'); 
 Readln(a); 
 If a=1 
  Then 
   begin 
    WriteStack(stack); 
    Print(stack); 
   end; 
 If a=2 
  Then 
   begin 
    While not Flag do 
     begin 
      Writeln('Стек пустой,чтобы извлечь элемент'); 
      Writeln('надо его сформировать'); 
      WriteStack(stack); 
      Flag:=Free(stack); 
     end; 
    ReadStack(stack); 
    Print(stack); 
   end; 
 Readln; 
 Readln; 
End.

Последний раз редактировалось Stilet; 12.05.2009 в 13:21.
Настенька..Блонди вне форума Ответить с цитированием
Старый 12.05.2009, 13:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

навскидку так...
Код:
...
 st=Record 
    data:integer; 
    prev,next:Exst; 
   end; 
...
stack,last:Exst; 
...
Procedure WriteStack(Var u:Exst); 
Var 
 x:exst; 
Begin 
 u:=nil; 
 Writeln('Введите элементы стека.Конец ввода -0'); 
 Read(i); 
 While i>0 do 
  begin 
   New(x); 
   x^.data:=i; 
   x^.prev:=u;  
   u:=x; 
   x^.next:=nil;
   u:=x; 
   Read(i); 
  end; 
 last:=u;
End; 
...
Procedure ReadStack(Var u:Exst); 
Var 
 x:Exst; 
Begin 
 x:=last; 
 while x<>nil do begin
  writeln(x^.data);
  x:=x^.prev;
 end;
End;
Только помоему твой код - чепуха.
I'm learning to live...

Последний раз редактировалось Stilet; 12.05.2009 в 13:29.
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправте ошибки в проге для Делфи! Toxass Общие вопросы Delphi 2 17.12.2008 02:01
исправте задачу Екатерина А. Паскаль, Turbo Pascal, PascalABC.NET 10 09.12.2008 22:48
Исправте ошибку(оператор case и if) neomaximus Помощь студентам 9 29.11.2008 11:36
Исправте программу.Ссылочные типы данных. Динамическая память ромка) Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2008 04:24