Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11673
Последний выпуск: 19.06.2015

сортировка стека (код прилагаеться)

88K
07 апреля 2014 года
new_misha
4 / / 07.04.2014
всем привет. помогите плиз с задананием: нужно в стеке упорядочить все числа по возрастанию:
вот мой код:

Код:
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;
я ёё брал отсюда http://forum.codenet.ru/q35257/# помогите плиз ее сисправить я непонимаю там где x:list задано и переменные типа list. спасибо заранее
88K
07 апреля 2014 года
new_misha
4 / / 07.04.2014
вообщем проверил, не работает вообще процедура сортировки
403
07 апреля 2014 года
Meander
487 / / 04.09.2011
А что это за объявление в функции сортировки?
 
Код:
var p,q,m:value;
88K
07 апреля 2014 года
new_misha
4 / / 07.04.2014
Цитата: Meander
А что это за объявление в функции сортировки?
 
Код:
var p,q,m:value;


я тут просто скопипастил ту процедуру я ссылку кинул, я не знаю какие должны здесь быть переменные , какие нужно подставить в эту процедуру и т.д. не могли бы мне помочь разобраться пожалуйста .я вот отсюда брал http://forum.codenet.ru/q35257/ и заплутался которые переменные которые использованы в предыдущей процедуре нужно подставлять сюда

209
07 апреля 2014 года
wanja
1.2K / / 03.02.2003
Проще всего, пожалуй, вставкой.
88K
07 апреля 2014 года
new_misha
4 / / 07.04.2014
Цитата: wanja
Проще всего, пожалуй, вставкой.


ну вот нашел

Код:
const N = 255;
type TArray = array [1..N] of integer;
procedure InsertSort(var x: TArray);
var
  i, j, buf: integer;
begin
  for i := 2 to N do
  begin
    buf := x[i];
    j := i - 1;
    while (j >= 1) and (x[j] > buf) do
    begin
      x[j + 1] := x[j];
      j := j - 1;
    end;
    x[j + 1] := buf;
  end;
end;
теперь какие сюда переменные ставить в моей задаче , не знаю :(

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог