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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2015, 23:03   #11
Никита757
Пользователь
 
Регистрация: 14.05.2015
Сообщений: 57
По умолчанию

А можно сортировать в порядке возрастания или в порядке убывания?
Никита757 вне форума Ответить с цитированием
Старый 02.11.2015, 23:16   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Дык твой код сортирует в порядке убывания. Поменяй знак в i^.Data<j^.Data на другой - получишь обратную сортировку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2015, 08:44   #13
Никита757
Пользователь
 
Регистрация: 14.05.2015
Сообщений: 57
По умолчанию

А как можно весь модуль с сортировкой привязать к основной программе
Код:
uses
  list_unit;
  
var simbol:string; IOResult:integer;
  list : PTItem;
  i, n_chastey, chislovaya_perem : integer;
  
begin
  writeln('Сколько чисел вы хотите ввести?');
  repeat
  readln(simbol); val(simbol,n_chastey,IOResult);
  if IOResult<>0 then writeln('Введите количество чисел еще раз');
  until IOResult=0;
  for i := 1 to n_chastey do
  begin
    writeln('Введите число №', i);
    repeat
    readln(simbol); val(simbol,chislovaya_perem,IOResult);
    if IOResult<>0 then writeln('Введите число №', i);
    until IOResult=0;
    Inc(list, chislovaya_perem);
  end;
  
  writeln('Список:');
  Showlist(list);
end.

Последний раз редактировалось Stilet; 03.11.2015 в 10:56.
Никита757 вне форума Ответить с цитированием
Старый 03.11.2015, 10:58   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну а то что ты написал это разве не привязка по твоему?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2015, 11:05   #15
Никита757
Пользователь
 
Регистрация: 14.05.2015
Сообщений: 57
По умолчанию

Он не воспринимает эту информацию, а следовательно не сортирует, может там проблема с описанием процедуры?
Никита757 вне форума Ответить с цитированием
Старый 03.11.2015, 11:10   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Он все воспринимает, просто ты не вписал в код вызов процедуры сортировки )
У тебя написаны вызовы обе функции ввода и вывода, а вот вызова сортировки нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2015, 11:15   #17
Никита757
Пользователь
 
Регистрация: 14.05.2015
Сообщений: 57
По умолчанию

Это я сделал, она сортирует только два, три элемента, а больше уже не сортирует
Никита757 вне форума Ответить с цитированием
Старый 03.11.2015, 11:37   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Показывай код )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.11.2015, 20:01   #19
Никита757
Пользователь
 
Регистрация: 14.05.2015
Сообщений: 57
По умолчанию

Вот код)
Код:
unit list_unit;

interface

      
type
 TDataTipe = integer;
 PTItem = ^TItem;
 TItem = Record
   Data : TDataTipe;
   Next : PTItem;
 end;
 
Procedure Inc(var Item: PTItem; Data: TDataTipe);
Procedure Sorta(Head:PTItem) ;
Procedure Showlist(Head : PTItem);

implementation

//Добавляем в список
Procedure Inc(var Item: PTItem; Data: TDataTipe);
var
  res : PTItem;
begin
    new(res);
    res^.Data:=Data;
    res^.Next:=Item;
    Item := res;
end;

//Сортировка
procedure Sorta(Head: PTItem);
var i,j,min:PtItem;v:TDataTipe;
begin
 i:=Head;
 while i<>nil do begin
   min:=i;
   j:=i^.Next;
   while j<>nil do
   begin
   if i^.Data<j^.Data then
   min:=j;
   j:=j^.next;
   end;
   if i<>min then
   begin
    v:=i^.Data; 
    i^.Data:=min^.data; 
    min^.data:=v;
   end;
   i:=i^.Next;
 end;
end;
 procedure Showlist(Head: PTItem);
begin 
  while Head <> nil do
  begin
    writeln(Head^.Data);
    Head := Head^.next;
  end;
end;
end.
Код:
uses
  list_unit;
  
var simbol:string; IOResult:integer;
  list : PTItem;
  i, n_chastey, chislovaya_perem : integer;
  
begin
  writeln('Сколько чисел вы хотите ввести?');
  repeat
  readln(simbol); val(simbol,n_chastey,IOResult);
  if IOResult<>0 then writeln('Введите количество чисел еще раз');
  until IOResult=0;
  for i := 1 to n_chastey do
  begin
    writeln('Введите число №', i);
    repeat
    readln(simbol); val(simbol,chislovaya_perem,IOResult);
    if IOResult<>0 then writeln('Введите число №', i);
    until IOResult=0;
    Inc(list, chislovaya_perem);
  end;
  
  writeln('Список:');sorta(list);
  showlist(list);
end.

Последний раз редактировалось Stilet; 03.11.2015 в 20:41.
Никита757 вне форума Ответить с цитированием
Старый 03.11.2015, 20:49   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вот результат:
Безымянный.jpg
Все нормально. Что-то ты не так делаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вставкой для стека. Morozy4 Помощь студентам 0 04.06.2012 18:54
Сортировка пузырьком, выбором, вставкой. vadiprog Помощь студентам 3 28.11.2011 17:05
Сортировка вставкой Damer Помощь студентам 11 26.05.2010 01:07
Структура, сортировка вставкой Slimikus Общие вопросы C/C++ 1 30.04.2010 15:40
Сортировка вставкой MAKEDON Общие вопросы C/C++ 1 26.04.2009 12:30