|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.12.2011, 12:13 | #1 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 32
|
Процедура слияния 2 файлов в 2 файла
procedure sort(var f1,f2,d1,d2:file of integer; var prov:integer );
var a,alast,b,blast,k,m,last,x: integer; fl:boolean; begin rewrite(d1); rewrite(d2); reset(f1); reset(f2); fl:=true; k:=1; //записываем в файл 1 m:=1; //читаем из файла 1 read(f1,a); read(f2,b); if a<b then begin write(d1,a); alast:=a; blast:=a; end else begin write(d1,b); blast:=b; alast:=b; m:=2; end; if m=1 then begin read(f1,a); if a<alast then fl:=false end; if m=2 then begin read(f2,b); if b<blast then fl:=false end; while (not eof(f1))and(not eof(f2)) do begin if fl=true then begin if a<b then begin if k=1 then write(d1,a) else write(d2,a); alast:=a; m:=1; read(f1,a); end else begin if k=2 then write(d2,b) else write(d1,b); blast:=b; m:=2; read(f1,b) end; end else begin if (m=1) then begin if k=1 then write(d1,b) else write(d2,b); blast:=b; read(f2,b); while (b>blast)and((not eof(f1))and(not eof(f2))) do begin if k=1 then begin write(d1,b);blast:=b; read(f2,b); end else begin write(d2,b); blast:=b; read(f2,b); end; end; end else begin if k=1 then write(d1,a) else write(d2,a); alast:=a; read(f1,a); while (a>alast)and((not eof(f1))and(not eof(f2))) do begin if k=1 then begin write(d1,a);alast:=a; read(f1,a); end else begin write(d2,b); blast:=b; read(f1,a); end; end; end; fl:=true; end; end; if not eof(f1) then begin while not eof(f1) do begin read(f1,x); if k=1 then write(d1,x) else write(d2,x); end; end; if not eof(f2) then begin while not eof(f2) do begin read(f2,x); if k=1 then write(d1,x) else write(d2,x); end; end; reset(d2); if eof(d2) then prov:=1 //файл отсортирован! else prov:=2; close(f1); rewrite(f1); close(f1); close(f2); rewrite(f2); close(f2); close(d1); close(d2); end; |
15.12.2011, 12:15 | #2 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 32
|
помогите искправить ошибки, слияние происходит по серия(некое кол-во чисел по возрастанию) из f1,f2 в d1, d2
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процедура считывания из файла | Black_butterfly | Помощь студентам | 0 | 29.05.2011 16:51 |
Функция обьединения двух посортованых файлов в третий методом слияния.. | eva.t | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 06.06.2010 02:39 |
Процедура выдачи из файла | grafgrial | Общие вопросы Delphi | 4 | 16.05.2010 00:34 |
Процедура поиска нескольких файлов одновременно | GvR | Общие вопросы Delphi | 3 | 15.11.2009 02:43 |
Программа для слияния файлов и просчёта суммы | Харуми-тян | Общие вопросы .NET | 9 | 07.02.2009 17:05 |