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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 17:43   #1
ostapchyk bod9
Новичок
Джуниор
 
Регистрация: 03.04.2011
Сообщений: 1
По умолчанию сортировать файл

так вот нужно выполнить сортировку( естественное слияние), вроде не очень сложная, но у меня проблема с подсчетом серий....не знаю куда впихнуть счетчик, так вот оно сортирует но! только первые 2,3,4,5,6 или 7 цифр, а нужно то много)
если не трудно помогите....или хотя бы ссылку на похожий листинг......

Код:
program l2sort;
uses crt;
procedure rozl(a,b,c:string; var k:word);
var m1,m2:word;f:boolean;fa,fb,fc:text;
begin
k:=1;
assign(fa,a);
assign(fb,b);
assign(fc,c);
reset(fa);
rewrite(fb);
rewrite(fc);
f:=true;
  if not eof(fa) then
  readln(fa,m1);
while not eof(fa) do
  begin
  readln(fa,m2);
  if m1>=m2 then
  f:=not f;
  if f then
  writeln(fb,m2)
  else
 writeln(fc,m2);
  m1:=m2;
  end;
close(fa);
close(fb);
close(fc);
end;
procedure zluv(a,b,c:string);
var fa,fb,fc:text;o,b1,b2,c1,c2:word;endb,endc,sb,sc:boolean;
begin
assign(fa,a);
assign(fb,b);
assign(fc,c);
rewrite(fa);
reset(fb);
reset(fc);
readln(fb,b1);
readln(fc,c1);
sb:=true;sc:=true;
endb:=not eof(fb);endc:=not eof(fc);
   while endb and endc and sb and sc do
    begin
    if b1<c1 then
      begin
      writeln(fa,b1);
      readln(fb,b2);
       if b1>b2 then
       sb:=false;
       b1:=b2;
       end
       else
        begin
        writeln(fa,c1);
        readln(fc,c2);
         if c1>c2 then
         sc:=false;
         c1:=c2;
        end;
     endb:=not eof(fb);
     endc:=not eof(fc);
     end;
while sb and endb do
 begin
 writeln(fa,b1);
 readln(fb,b2);
  if b2<b1 then
  sb:=false;
  endb:=not eof(fb);
  b1:=b2;
 end;
while sc and endc do
begin
 writeln(fa,c1);
 readln(fc,c2);
  if c2<c1 then
  sc:=false;
  endc:=not eof(fc);
  c1:=c2;
 end;
close(fa);
close(fb);
close(fc);
end;
procedure sort;
var i:word;
begin
i:=0;
repeat
rozl('a.txt','b.txt','c.txt',i);
zluv ('a.txt','b.txt','c.txt');
until i=1;
end;
begin
clrscr;
sort;

end.

Последний раз редактировалось ostapchyk bod9; 03.04.2011 в 17:45.
ostapchyk bod9 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировать в массиве Ronaldo_7 Помощь студентам 4 06.12.2010 14:38
Сортировать нечётные столбцы.... bandit_andrei Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2010 21:22
Сортировать список Vladsgs Microsoft Office Excel 4 18.05.2010 08:39
Сортировать результаты вычислений Jana Microsoft Office Excel 2 03.11.2008 08:36
Сортировать по имени Манжосов Денис :) Помощь студентам 2 25.04.2008 10:12