IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Слияние файлов
Client
сообщение 18.05.2008 22:03
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Всем привет!
У меня проблема с такой задачей:даны 2 файла упорядоченные по неубыванию, получить новый файл, упорядоченный из элементов этих двух файлов по неубыванию.
Никак не могу сделать чтоб работала для всех вариантов исходных данных...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Client
сообщение 19.05.2008 5:40
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


procedure sliyanie;
var
t,t1,t2:boolean;
a,b:integer;
begin
reset(f3);
reset(f2);
rewrite(f4);
seek(f2,filesize(f2)-1);
read(f2,a);
seek(f3,filesize(f3)-1);
read(f3,b);
t:=a>=b;
reset(f2);
reset(f3);
read(f2,a);
read(f3,b);
while not eof(f2) and not eof(f3) do begin
if a<b then begin
write(f4,a);
read(f2,a)
end
else begin
write(f4,b);
read(f3,b)
end;
end;
t1:=true;
t2:=true;
if t then begin
while not eof(f2) do begin
if (a>b) and t1 then begin
write(f4,b);
t1:=false
end;
write(f4,a);
read(f2,a);
if eof(f2) and t2 then begin
seek(f2,filesize(f2)-1);
t2:=false
end;
end;
end
else
while not eof(f3) do begin
if (a<b) and t1 then begin
write(f4,a);
t1:=false
end;
write(f4,b);
read(f3,b);
if eof(f3) and t2 then begin
seek(f3,filesize(f3)-1);
t2:=false
end;
end;
end;
Пример
Файл 1:2 2 3 4 7
Файл 2:5 10
Я делал так:читаем последние элементы файлов, сравниваем их.Ресет 2 файлов, читаем первые элементы. 10>7, значит пока не конец первого файла читаем из первого и сравнием. Когда кончился файл 1, дописываем элементы файла 2.
На этом примере вроде отработало, а если поменять файлы местами- то не работает.
Еще пример:
файл 1:50
файл 2: 2 2 3 4 7
Здесь как тока считали 50, сразу конец файла1 и не входим ни в один из циклов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.08.2025 3:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"