Тема:Файлы(текствовые); ЗАДАЧА: Дан текст, в котором есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.
Причём нужна брать текст из файла вывести на экран... А в тесте несколько строчек! Нужен Текст задачи!! P.S. Лучше решить задачу в делфи... Но можно и в паскале...сам потом передалаю
ЗАРАНЕЕ спасибо!!
Tan
16.06.2007 18:24
Ну по идее можно так : читаешь строку с файла, потом пробегаешь по ней до того момента как находишь скобку (, после этого выводишь на экран всё, что после этой скобки до тех пор пока не встретишь ) скобку. Так как ты написал что в строке только одна открывающая и закрывающая скобка, то задание не требует дополнительных проверок. Если я верно понял, то вот, что вышло, не судите строго, давно не кодил :
Uses crt; Const filename = 'Data.txt'; Var f : Text; s : string; i : integer; openn,closee : boolean; begin Clrscr; assign (f,filename); Reset (f); while not eof(f) do begin readln (f,s); openn := False; Closee := False; writeln; for i := 1 to Length(S) do begin if s[i] = '(' then openn := True else if s[i] = ')' then Closee := True; if (Openn and Not(Closee)) and (s[i] <> '(') then write (s[i] : 2); end; end; Close (f); readkey; end.
Ээ ну я цикл чтения из файла опустил ... Думал это и так понятно.
volvo
16.06.2007 22:34
Ну, вот мне непонятно... Ты что, прилепить все строки одна к другой собрался? А длины 255 символов хватит? А если нет - то как ты через Pos одновременно ищешь в одной и той же строке и открывающую и закрывающую скобку?
klem4
16.06.2007 22:47
)) Понял
Сглючило на то что в файле в каждой строке есть по 2 скобки ...
Ну тогда вот так:
uses crt;
var f: Text; s: Char;
begin assign(f, 'text.txt'); reset(f); while not(eof(f)) do begin read(f, s); while not(eof(f)) and (s <> '(') do read(f, s); if not(eof(f)) then read(f, s); while not(eof(f)) and (s <> ')') do begin write(s); read(f, s); end; end; close(f); end.
F@RTEM
17.06.2007 1:48
Цитата(klem4 @ 16.06.2007 19:47)
)) Понял
Сглючило на то что в файле в каждой строке есть по 2 скобки ...
Ну тогда вот так:
uses crt;
var f: Text; s: Char;
begin assign(f, 'text.txt'); reset(f); while not(eof(f)) do begin read(f, s); while not(eof(f)) and (s <> '(') do read(f, s); if not(eof(f)) then read(f, s); while not(eof(f)) and (s <> ')') do begin write(s); read(f, s); end; end; close(f); end.
ага...пасибочки... я её переделал в делфи... она работает...но у меня получается что он выводит по одной букве(т.е по одному символу в строчку)
var s:string;{Если я меняю на string то задача виснит} begin assignfile(g,'myfile.txt'); Reset(g); while not eof(g) do begin read(g,s); while not(eof(g)) and (s <> '(') do read(g,s); if not(eof(g)) then read(g,s); while not(eof(g)) and (s <> ')') do begin Memo2.Lines.Add(s); read(g,s); end; end; closefile(g); end; end.
Пасибо Работает... а объясни мне пожалуйста(а то я не знаю) что это означает
procedure TForm1.Button1Click(Sender: TObject); var sl: tstringlist;{ЭТО КАК Я ПОНИМАЮ ТОЖЕ САМОЕ ЧТО STRING НО ТОКА В НЕСКОЛЬКО СТРОЧКАХ...ТАК Я ПОНИМАЮ???} begin sl := tstringlist.Create; try{А ВОТ ЧТО ЭТО ОЗНАЧАЕТ Я НЕЗНАЮ???НЕПОДСКАЖИТЕ???} sl.LoadFromFile('txt.txt'); memo1.Text := Copy(sl.Text, Pos('(', sl.Text) + 1, Pos(')', sl.Text) - Pos('(', sl.Text) - 1); finally {А ВОТ ЧТО ЭТО ОЗНАЧАЕТ Я НЕЗНАЮ???НЕПОДСКАЖИТЕ???} sl.Free;{А ВОТ ЧТО ЭТО ОЗНАЧАЕТ Я НЕЗНАЮ???НЕПОДСКАЖИТЕ???} end; end;
volvo
19.06.2007 2:24
Добавил комментарии
procedure TForm1.Button1Click(Sender: TObject); var sl: tstringlist; // это класс Дельфи, предназначенный для хранения _списка_ строк... begin sl := tstringlist.Create; // Создаем список строк
// в принципе можно обойтись и без try/finally, но я предпочитаю быть уверенным, что // объект будет удален независимо от успешности его обработки try
sl.LoadFromFile('txt.txt'); memo1.Text := Copy(sl.Text, Pos('(', sl.Text) + 1, Pos(')', sl.Text) - Pos('(', sl.Text) - 1); finally // поскольку это находится в Finally, то независимо от результата действий в секции Try // строка Free выполнится всегда ... sl.Free; // а это, собственно, означает освобождение списка строк. Фактически - удаление его
end; end;
P.S. Тему надо бы двинуть в Delphi ...
F@RTEM
19.06.2007 2:42
Цитата(volvo @ 18.06.2007 23:24)
Добавил комментарии
procedure TForm1.Button1Click(Sender: TObject); var sl: tstringlist; // это класс Дельфи, предназначенный для хранения _списка_ строк... begin sl := tstringlist.Create; // Создаем список строк
// в принципе можно обойтись и без try/finally, но я предпочитаю быть уверенным, что // объект будет удален независимо от успешности его обработки try
sl.LoadFromFile('txt.txt'); memo1.Text := Copy(sl.Text, Pos('(', sl.Text) + 1, Pos(')', sl.Text) - Pos('(', sl.Text) - 1); finally // поскольку это находится в Finally, то независимо от результата действий в секции Try // строка Free выполнится всегда ... sl.Free; // а это, собственно, означает освобождение списка строк. Фактически - удаление его
end; end;
P.S. Тему надо бы двинуть в Delphi ...
ПАСИБО БОЛЬШОЕ!!!!!!
F@RTEM
19.06.2007 17:43
а ты мне не мог бы скинуть ссылку где это можно прочитать??? чтоб разобраться до конца...посмотреть примерыи может что нибудь новое узнаю!