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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 00:42   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию Стеки в Паскаль

всем привет. помогите плиз с задананием: нужно в стеке упорядочить все целые числа по возрастанию:
вот мой код:
Код:
uses
  crt;
  type 
  ptr = ^item;
  item=record
  data:string;
  next:ptr;
  end;
  var
     head,current:ptr;
     str:string;
     i:integer;
     n:integer;
     key:char;
     
     procedure push(value:string);
     begin
  new(current);
  current^.data:=value;
  current^.next:=head;
  head:=current;
  end;
  
  procedure pop(var value:string);
  begin
  current:=head;
  value:=head^.data;
 head:=current^.next;
  dispose(current);
  end;
  
  
 procedure sort(var value:string);
var p,q,m:value; s:string;
begin
p:=value;
while p<>nil do
 begin 
 q:=p;m:=q;
 while q<>nil do
  begin
  if m^.data<q^.data then m:=q;
  q:=q^.next
  end;
 s:=p^.data; 
 p^.data:=m^.data; 
 m^.data:=s;
 p:=p^.next
 end
end;

begin

writeln('stack');
head:=nil;
repeat

writeln('1.add element');
writeln('2. sort');
writeln('3.output');
writeln('4.exit');
key:=readkey;
case key of 
 '1': begin
 writeln('enter stack length');
 readln(n);
 for i:=1 to n do
 begin
 writeln('enter data item' , i);
 readln(str);
 push(str);
 end;
 end;
  
  
  '2': begin
  sort(str);
  end;
  
  '3':begin
  while head<>nil do begin
  pop(str);
  write(str, ' ' );
  end;
  end;
  end;
  until key   ='4';
  end.
проблема с самой процедурой сортировки:
Код:
procedure sort(var value:string);
var p,q,m:value; s:string;
begin
p:=value;
while p<>nil do
 begin 
 q:=p;m:=q;
 while q<>nil do
  begin
  if m^.data<q^.data then m:=q;
  q:=q^.next
  end;
 s:=p^.data; 
 p^.data:=m^.data; 
 m^.data:=s;
 p:=p^.next
 end
end;
тут что то с переменными начудил не знаю что в самом заголовке процедуры, какую переменную там привязать. спасибо заранее
mishammm вне форума Ответить с цитированием
Старый 07.04.2014, 01:32   #2
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

вообще процедура сортировки не работает, помогите плиз исправить процедуру я просто не знаю какие нужно подставлять значения переменных в эту процедуру

Последний раз редактировалось mishammm; 07.04.2014 в 03:16.
mishammm вне форума Ответить с цитированием
Старый 07.04.2014, 07:15   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В стеке? Вы уверены? Это бред..
Poma][a вне форума Ответить с цитированием
Старый 07.04.2014, 07:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Думаю так:
Код:
procedure sort;
var q,w:ptr s:string;
begin
p:=head;
while p<>nil do
 begin 
 q:=p;
 while q<>nil do
  begin
   if p^.data<q^.data then begin s:=p^.data;p^.data:=q^.data;q^.data:=s;end;
   q:=q^.next
  end;
 end
end;
Это конечно если не считать того что у тебя стэк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2014, 09:47   #5
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Думаю так:
Код:
procedure sort;
var q,w:ptr s:string;
begin
p:=head;
while p<>nil do
 begin 
 q:=p;
 while q<>nil do
  begin
   if p^.data<q^.data then begin s:=p^.data;p^.data:=q^.data;q^.data:=s;end;
   q:=q^.next
  end;
 end
end;
Это конечно если не считать того что у тебя стэк.
да как то так, спасибо, задание так и стояло в стеке, ну думаю тут список больше подойдет
mishammm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
файлы записи стеки (3 в 1) Паскаль lena-tus Помощь студентам 3 23.11.2013 01:01
Стеки Xa9t Паскаль, Turbo Pascal, PascalABC.NET 5 26.09.2012 17:40
Паскаль.Стеки Viwwna Помощь студентам 1 28.06.2012 21:33
Где ошибка в программе? Списки. Стеки. Паскаль AHD Помощь студентам 0 10.12.2010 14:25