Нахождение одинаковых строк в двух файлах и вывод результата в третий файл - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста. Есть два тестовых файла, которые содержат строки (файлы большие, по 60k строк в каждом). Задача сравнить эти два этих файла и найти одинаковые строки и вывести эти строки в третий файл, который программа будет создавать. Структура файла такова, что все строки имеют фиксированную длину (41 символ). Пример:
Спойлер
В конце программы нужно вывести на экран количество одинаковых строк, которые были найдены программой, иначе написать "Не найдено" Что у меня получилось:
Листинг программы
  1. program pr3;
  2. var
  3. str,ste:String;
  4. fr,fe,fd:Text;
  5. n,q1,q2,l:word;
  6. begin
  7. Assign(fe,'D:\eng_pure.txt');
  8. Assign(fr,'D:\rus_pure.txt');
  9. Assign(fd,'D:\delta.txt');
  10. rewrite(fd);
  11. reset(fe);
  12. reset(fr);
  13. n:=0;
  14. q1:=1;
  15. q2:=1;
  16. l:=1;
  17. For q1:=1 to 65000 do begin
  18. ReadLn(fe,ste);
  19. For q2:=1 to 16200 do begin
  20. ReadLn(fr,str);
  21. for l:=1 to 41 do
  22. if ste[l]=str[l] then
  23. begin
  24. writeln(fd, ste);
  25. end;
  26. end;
  27. end;
  28. If n>0 then
  29. Writeln('naydeno ', n, ' sovpadeniy');
  30. else
  31. Writeln('Sovpadeniy ne naydeno');
  32. readln
  33. end.
Перебор q1 и q2 сейчас сделан по фактическому количеству строк в тестовых файлах, в идеале нужен EOF, но с ним программа вообще отказывалась запускаться. Подскажите пожалуйста, где я ошибся?
Если что самый похожий вариант Переписать в третий файл только те строчки, которые есть и в первом, и во втором файлах. уже был испробован - в файл результата не выводится ни одной строки.

Решение задачи: «Нахождение одинаковых строк в двух файлах и вывод результата в третий файл»

textual
Листинг программы
  1.   while s[Length(s)] in [#9,' '] do Delete(s,Length(s),1);

Объяснение кода листинга программы

  1. В цикле while происходит проверка условия s[Length(s)] in [#9,' ']. Это условие означает, что текущая строка (s) содержит последний символ ('#9') и пробел (' '). Если это условие выполняется, то происходит удаление последнего символа из строки s.
  2. Далее следует команда Delete(s,Length(s),1), которая удаляет последний символ из строки s. Здесь Length(s) используется для определения длины строки s.
  3. Затем происходит выход из цикла while с помощью оператора break.
  4. После выхода из цикла while происходит переход к следующей итерации цикла, при этом переменная s обновляется, чтобы содержать обрезанную строку.
  5. Цикл повторяется до тех пор, пока условие s[Length(s)] in [#9,' '] не станет ложным. Это означает, что в строке s больше нет символов '#9' и пробела.
  6. После завершения цикла while происходит переход к следующему оператору, который будет выполнен.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы