Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 23.03.2011, 20:28   #1
dark999
Пользователь
 
Аватар для dark999
 
Регистрация: 17.03.2011
Сообщений: 42
Восклицание Два текстовых файла. Записать в третий те строки, которые есть и в первом, и во втором файлах (Паскаль)

Код:
Program lab8;
uses crt;
var
f,f1,f2:text;
s,s1:String;
begin
  Assign(f,'D:\222.txt');
  reset(f);
  Assign(f1,'D:\333.txt');
  Assign(f2,'D:\444.txt');
  rewrite(f2);
  while(not eof(f))do
  begin
     readln(f,s);
     reset(f1);
     while(not eof(f1))do
     begin
       readln(f1,s1);
       if s = s1 then
           writeln(f2,s1);
     end;
  end;
  Close(f2);
  Close(f1);
  Close(f);
  readln;
end.

Вроде верно, но ошибку выдает!


А вот и условие)

Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом, и во втором файлах

Последний раз редактировалось dark999; 23.03.2011 в 20:29. Причина: ))
dark999 вне форума Ответить с цитированием
Старый 23.03.2011, 20:49   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

1) раз Вы в цикле файл f1 открываете - так в цикле и закрывайте его!

2) если вдруг во втором файле эта строка встретится несколько раз, то столько же раз она запишется в выходной файл. Думаю, что так не должно быть. Прерывайте цикл, если нашлось совпадение.

вот, попробуйте такое исправление:
Код:
  while(not eof(f))do
  begin
     readln(f,s);
     reset(f1);
     while(not eof(f1))do
     begin
       readln(f1,s1);
       if s = s1 then begin
            writeln(f2,s1);
            break; {прерываем цикл чтения 2-го файла}
       end;
     end;
    Close(f1); {обязательно закрываем второй файл!}
  end;
  Close(f2);
  Close(f);
  readln;
end.
p.s. писал прямо на форуме, разумеется, не проверял.
"Допилите напильником" в случае необходимости!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2011, 21:00   #3
dark999
Пользователь
 
Аватар для dark999
 
Регистрация: 17.03.2011
Сообщений: 42
По умолчанию

Что нужно вводить то вообще?
dark999 вне форума Ответить с цитированием
Старый 28.03.2011, 19:03   #4
Karina89
Пользователь
 
Регистрация: 26.03.2011
Сообщений: 67
По умолчанию

а что за ошибка???
Karina89 вне форума Ответить с цитированием
Старый 28.03.2011, 20:41   #5
Smile:)
Новичок
Джуниор
 
Регистрация: 27.03.2011
Сообщений: 1
По умолчанию

А где именно выдает ошибку?
Smile:) вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два текстовых файла assch Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 29.09.2010 13:41
Два столбца таблицы, во втором - поле, в первом - визуальное название этого поля Krasi HTML и CSS 1 30.07.2010 23:30
Записать в файл g все компоненты файла f, которые являются полными квадратами. loloverg Помощь студентам 1 20.05.2010 03:36
дано два файла. получить третий,содержащий поочередно строки исходных двух файлов. HyvAchoK Паскаль, Turbo Pascal, PascalABC.NET 1 18.12.2008 10:51
Фильтрация данных на втором листе по данным на первом ppl Microsoft Office Excel 3 13.08.2008 13:07


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS