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

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

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

> Сравнение данных в файлах
naumkin
сообщение 16.11.2005 10:45
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

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


Господа, помогите пожалуйста решить....

Во входном файле F1 находится список имен файлов с расширением pas , а в файле F2 - другой список имен тоже с расширением pas.
Добавить в список файлов из F1 список из F2 таким образом, что в случае совпадения имен и расширений у двух файлов из F1 и F2 расширение файла из F1 меняется на bak .

в прикрепленном два файла с входными данными....

Спасибо...


Прикрепленные файлы
Прикрепленный файл  LIST1.TXT ( 58 байт ) Кол-во скачиваний: 225
Прикрепленный файл  LIST2.TXT ( 58 байт ) Кол-во скачиваний: 229
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 16.11.2005 11:17
Сообщение #2


Гость






cool.gif Что-то в этом духе (учти, исходный list1.txt будет перезаписан):
uses dos;

const
max_size = 20; { можешь увеличить }
type
list_type = array[0 .. pred(max_size)] of string;

function read_list(var f: text; var arr: array of string): integer;
var
count: integer;
s: string;
begin
count := -1;
while not seekeof(f) do begin
readln(f, s);
inc(count);
arr[count] := s;
end;
read_list := count;
end;

procedure check_exists(var arr: array of string;
n: integer; s: string);
var
i: integer;
found: boolean;
s_dir: dirstr; s_name: namestr; s_ext: extstr;
begin
i := 0; found := false;
while (i <= n) and not found do
if arr[i] = s then begin
fsplit(s, s_dir, s_name, s_ext);
arr[i] := s_name + '.bak';
found := true;
end
else inc(i)
end;


var
list_1, list_2: list_type;
i, count_1, count_2: integer;

f1, f2, f3: text;


begin
assign(f1, 'list1.txt'); reset(f1);
assign(f2, 'list2.txt'); reset(f2);

count_1 := read_list(f1, list_1);
count_2 := read_list(f2, list_2);

for i := 0 to count_2 do
check_exists(list_1, count_1, list_2[i]);

rewrite(f1);
for i := 0 to count_1 do
writeln(f1, list_1[i]);
for i := 0 to count_2 do
writeln(f1, list_2[i]);

close(f2);
close(f1);
end.
 К началу страницы 
+ Ответить 

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


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

 



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