Записать в файл h все совпадающие строки файлов f и g - Free Pascal
Формулировка задачи:
Добрый вечер=) Подскажите пожалуйста, было задание:
Даны файлы f и g. Записать в файл h все совпадающие строки файлов f и g, если таких строк нет, то в файл h записать строки из файлов f и g, чередуя их, начиная с первой из файла f
Так вот, дошла в программе до момента, когда в файлах нет одинаковых строк, и нужно строки из файлов f и g записать чередуя их начиная с первой из файла f в файл h. Я попробовала вот так(вот моя программа). Но здесь сначала записывается первая строка из файла f а затем весь файл g, потом вторая строка из файла f, а затем весь файл g и т.д. Подскажите, как правильно сделать(
Program File; var a, b:array of string; f, g, h: textfile; i, j: byte; Flag: boolean; begin Flag:=false; Assign(f, 'f.txt'); Assign(g, 'g.txt'); Assign(h, 'h.txt'); Reset(f); while not eof(f) do begin SetLength(a,Length(a)+1); Readln(f,a[High(a)]); end; Reset(g); while not eof(g) do begin SetLength(b,Length(b)+1); Readln(g, b[High(b)]); end; Rewrite(h); for i:=Low(a) to High(a) do for j:=Low(b) to High(b) do begin if a[i]=b[j] then begin Writeln(h, a[i]); Flag:=true; end; end; Close(h); if flag=false then begin Rewrite(h); begin for i:=Low(a) to High(a) do begin Writeln(h, a[i]); for j:=Low(b) to High(b) do writeln(h, b[j]); end; end; end; end.
Решение задачи: «Записать в файл h все совпадающие строки файлов f и g»
textual
Листинг программы
var a, b:array of string; f, g, h: textfile; i, j: byte; Flag: boolean; begin Assign(f, 'f.txt'); Assign(g, 'g.txt'); Assign(h, 'h.txt'); Reset(f); while not eof(f) do begin SetLength(a,Length(a)+1); Readln(f,a[High(a)]); end; Reset(g); while not eof(g) do begin SetLength(b,Length(b)+1); Readln(g, b[High(b)]); end; Rewrite(h); Flag:=false; for i:=Low(a) to High(a) do for j:=Low(b) to High(b) do if a[i]=b[j] then begin Writeln(h, a[i]); Flag:=true; end; Close(h); if flag=false then begin Rewrite(h); for i:=Low(a) to High(a) do begin Writeln(h, a[i]); writeln(h, b[i]); end; end; close(h); write('Fail zapisan'); readln end.
Объяснение кода листинга программы
- Объявлены четыре переменные: f, g, h (файлы), a, b (массивы).
- Файлы f и g открываются на чтение, файл h открывается на запись.
- Данные из файлов f и g считываются в массивы a и b соответственно.
- Если длина массива a или b увеличивается, то новый элемент добавляется в конец массива.
- Если файл h существует, то он перезаписывается.
- Переменная Flag инициализируется как false.
- Для каждой строки в массиве a выполняется поиск соответствующей строки в массиве b.
- Если строки совпадают, то они записываются в файл h.
- Если Flag остается равным false после цикла, то в файл h записываются все строки из массива a и b.
- Файл h закрывается.
- Выводится сообщение
Fail zapisan
. - Программа ожидает ввода с клавиатуры.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д