![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Rudolf |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Задача:''Дан текстовый файл f. Записать в файл g с сохоанением порядка следования те символы файла f которым в этом файле предшествует буква b ''. Алгоритм нормальный придумать немогу.Ведь для текстовых файлов не действует процедура SEEK..Написал только для одной буквы.
Код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Memo2: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var f,g:textfile; i,j,k:integer; ch:char; procedure TForm1.Button1Click(Sender: TObject); begin memo1.Lines.SaveToFile('c:\f.txt'); end; procedure TForm1.Button3Click(Sender: TObject); begin memo2.Lines.LoadFromFile('c:\g.txt'); end; procedure TForm1.Button2Click(Sender: TObject); begin k:=0; AssignFile(f,'c:\f.txt'); AssignFile(g,'c:\g.txt'); reset(f); rewrite(g); While not EOF(f) do begin read(f,ch); inc(k); if ch='b' then begin reset(f); while i<>k do begin inc(i); read(f,ch); if i=k-1 then write(g,ch); end; end; end; CloseFile(f); CloseFile(g); end; end. |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нужно сохранять предыдущий считанный символ в отдельной переменной, и если текущий ="b", то записать его в файл.
repeat
Read (f,b);
if b='b' then write (g, p);
p:=b;
until eof(f);
правда, символ 'b' может оказаться первым, эту ситуацию тоже можно предусмотреть. |
Rudolf |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Malice спасибо тебе...А если мы будем читать не символы а строки т.е.
Код procedure TForm1.Button2Click(Sender: TObject); begin k:=0; AssignFile(f,'c:\f.txt'); AssignFile(g,'c:\g.txt'); reset(f); rewrite(g); While not EOF(f) do begin readln(f,s); for i:=1 to length(s) do begin if (s[i]='b') and (i<>1) then write(g,s[i-1]); end; end; CloseFile(f); CloseFile(g); end; Так можно??? |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 12:26 |