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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 15:21   #1
LittleStudent
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 17
По умолчанию Сортировка

Подскажите плз как сделать чтобы была только 1 процедура и главная программа???
Типа:
Код:
Program Sort_Array;
         Procedure
         ........
         Begin
         end.
А вот что у меня :
Код:
{$R-}
Program xa;
uses
  crt;
type
  itype=longint; {Тип сортируемых данных}
  TTImas=array [1..1] of itype;
  TImas=^TTImas;
  ltype=byte; {Тип для массива "карманов"}
  TTBmas=array [1..1] of ltype;
  TBmas=^TTBmas;
 
{процедура вывода массива}
procedure printmas(mas:TImas; n:longint);
var
  i:longint;
begin
  for i:=1 to n do
    Write(mas^[i], ' ');
end;
 
{Процедура определения длинны числа}
function lengthi(ch:longint):integer;
var
 s:string;
begin
  str(ch,s);
  lengthi:=length(s);
end;
 
{Процедура определяющая в какой "карман" пойдёт число}
function numberpos(ch,posi:longint):integer;
var
 s:string;
 code,tmpi:integer;
begin
  str(ch,s);
  if length(s)<posi then
    numberpos:=0
  else
  begin
    delete(s,1,length(s)-posi);
    if length(s)>1 then
      delete(s,2,length(s)-1);
    val(s,tmpi,code);
    numberpos:=tmpi
   end;
end;
 
{Процедура сортировки}
procedure sortmas(var mas:TImas; n:longint);
var
  i,k,koliter,posf,l,posi,tmp:longint;
  mastmp:TImas;
  pos:TBmas;
begin
  koliter:=0;
  GetMem(MasTmp,sizeof(itype)*n);
  GetMem(pos,sizeof(ltype)*n);
  for i:=1 to n do
  begin
    if lengthi(mas^[i])>koliter then
      koliter:=lengthi(mas^[i]);
    pos^[i]:=0;
  end;
  for i:=1 to koliter do
  begin
    for k:=1 to n do
    begin
      pos^[k]:=numberpos(mas^[k],i);
      mastmp^[k]:=mas^[k];
    end;
    posi:=1;
    for posf:=0 to 9 do
      for k:=1 to n do
        if (pos^[k]=posf) then
        begin
          mas^[posi]:=mastmp^[k];
          inc (posi);
        end;
  end;
end;
 
{Процедура проверки правильности сортировки}
function yes(mas:TImas; n:longint):boolean;
var
  flag:boolean;
  i:longint;
begin
  flag:=true;
  i:=n;
  while (i>1) and flag do
  begin
    if mas^[i]<mas^[i-1] then
      flag:=False;
    dec(i);
  end;
  yes:=flag;
end;
 
var
  massiv:TImas;
  i,n:longint;
begin
  repeat
    clrscr;
    Write('Vvedute pa3mepHoCt'' massiva, n= ');
    readln(n);
  until (n>0);
  clrscr;
  Writeln('VVedute elemenTbl massiva');
  GetMem(massiv,sizeof(itype)*n);
  for i:=1 to n do
  begin
    Write('Massiv[',i,']= ');
    readln(massiv^[i]);
  end;
  clrscr;
  writeln('massiv do coptupovki:');
  printmas(massiv,n);
  sortmas(massiv,n);
  writeln;
  writeln;
  writeln('massiv posle sortupovku');
  printmas(massiv,n);
  writeln;
  Write('Macciv otcoptipovan ');
  if yes(massiv,n) then
    writeln('pravul''no')
  else
    writeln('nepravil''no');
  readln;
  FreeMem(massiv,sizeof(itype)*n);
end.
{$R+}
Заранее спасибо.
LittleStudent вне форума Ответить с цитированием
Старый 26.06.2011, 15:46   #2
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

плохо сформулирован вопрос, но как понял лично я имеется ввиду чтобы в программы имела вид вроде:
program
uses ...
type ...
procedure x;
begin
...
end;
begin
x;
end.

так что ли? если так то впихните просто код всей программы в процедуру одну а потом просто вызовите как я показал
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 16:21   #3
LittleStudent
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 17
По умолчанию

непонял.
Мне нужно чтобы была просто процедура сортировки.
А как убрать лишние процедуры и функции в нее незнаю(((
помоги плз
LittleStudent вне форума Ответить с цитированием
Старый 26.06.2011, 16:40   #4
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

аааа. ну вроде понял. так программа больше станет потому что вместо вызова процедуры надо будет написать её код заново.

Код:
procedure sortmas(var mas:TImas; n:longint);
var
  i,k,koliter,posf,l,posi,tmp:longint;
  mastmp:TImas;
  pos:TBmas;
begin
  koliter:=0;
  GetMem(MasTmp,sizeof(itype)*n);
  GetMem(pos,sizeof(ltype)*n);
  for i:=1 to n do
  begin
    if lengthi(mas^[i])>koliter then
      koliter:=lengthi(mas^[i]);// вот эту строку ниже рассмотрю
    pos^[i]:=0;
  end;
  for i:=1 to koliter do
  begin
    for k:=1 to n do
    begin
      pos^[k]:=numberpos(mas^[k],i);
      mastmp^[k]:=mas^[k];
    end;
    posi:=1;
    for posf:=0 to 9 do
      for k:=1 to n do
        if (pos^[k]=posf) then
        begin
          mas^[posi]:=mastmp^[k];
          inc (posi);
        end;
  end;
end;
это
Код:
 if lengthi(mas^[i])>koliter then
      koliter:=lengthi(mas^[i]);
надо за менить на это
Код:
if lengthi(mas^[i])>koliter then
begin
str(mas^[i],s);
koliter:=length(s);
end;
и так со всеми процедурами. только в сортировку надо будет ещё один параметр добавить var yes:boolean и при её вызове в программе добавить булеву переменную sortmas(massiv,n,fl); и в программе заменить строку if yes(massiv,n) then на if fl then. printmas(massiv,n); можно тупо встунуть в самый конец процеруды процедуры сортировки. вроде всё
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 16:44   #5
LittleStudent
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 17
По умолчанию

Спасибо большое!!!!
LittleStudent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32