Тема:Файлы(текствовые); ЗАДАЧА: Дан текст, в котором есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок.
Причём нужна брать текст из файла вывести на экран... А в тесте несколько строчек! Нужен Текст задачи!! P.S. Лучше решить задачу в делфи... Но можно и в паскале...сам потом передалаю
ЗАРАНЕЕ спасибо!!
Tan
16.06.2007 14:24
Ну по идее можно так : читаешь строку с файла, потом пробегаешь по ней до того момента как находишь скобку (, после этого выводишь на экран всё, что после этой скобки до тех пор пока не встретишь ) скобку. Так как ты написал что в строке только одна открывающая и закрывающая скобка, то задание не требует дополнительных проверок. Если я верно понял, то вот, что вышло, не судите строго, давно не кодил :
Uses crt;
Const filename = 'Data.txt';
Var f : Text;
s : string;
i : integer;
openn,closee : boolean;
begin
Clrscr;
assign (f,filename);
Reset (f);
whilenot eof(f) dobegin
readln (f,s);
openn := False;
Closee := False;
writeln;
for i := 1to Length(S) dobeginif s[i] = '('then openn := True elseif s[i] = ')'then Closee := True;
if (Openn andNot(Closee)) and (s[i] <> '(') thenwrite (s[i] : 2);
end;
end;
Close (f);
readkey;
end.
Ээ ну я цикл чтения из файла опустил ... Думал это и так понятно.
volvo
16.06.2007 18:34
Ну, вот мне непонятно... Ты что, прилепить все строки одна к другой собрался? А длины 255 символов хватит? А если нет - то как ты через Pos одновременно ищешь в одной и той же строке и открывающую и закрывающую скобку?
klem4
16.06.2007 18:47
)) Понял
Сглючило на то что в файле в каждой строке есть по 2 скобки ...
Ну тогда вот так:
uses crt;
var
f: Text;
s: Char;
begin
assign(f, 'text.txt');
reset(f);
whilenot(eof(f)) dobeginread(f, s);
whilenot(eof(f)) and (s <> '(') doread(f, s);
ifnot(eof(f)) thenread(f, s);
whilenot(eof(f)) and (s <> ')') dobeginwrite(s);
read(f, s);
end;
end;
close(f);
end.
F@RTEM
16.06.2007 21:48
Цитата(klem4 @ 16.06.2007 19:47)
)) Понял
Сглючило на то что в файле в каждой строке есть по 2 скобки ...
Ну тогда вот так:
uses crt;
var
f: Text;
s: Char;
begin
assign(f, 'text.txt');
reset(f);
whilenot(eof(f)) dobeginread(f, s);
whilenot(eof(f)) and (s <> '(') doread(f, s);
ifnot(eof(f)) thenread(f, s);
whilenot(eof(f)) and (s <> ')') dobeginwrite(s);
read(f, s);
end;
end;
close(f);
end.
ага...пасибочки... я её переделал в делфи... она работает...но у меня получается что он выводит по одной букве(т.е по одному символу в строчку)
var
s:string;{Если я меняю на string то задача виснит}begin
assignfile(g,'myfile.txt');
Reset(g);
whilenot eof(g) dobeginread(g,s);
whilenot(eof(g)) and (s <> '(') doread(g,s);
ifnot(eof(g)) thenread(g,s);
whilenot(eof(g)) and (s <> ')') dobegin
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
18.06.2007 22: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
18.06.2007 22: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 13:43
а ты мне не мог бы скинуть ссылку где это можно прочитать??? чтоб разобраться до конца...посмотреть примерыи может что нибудь новое узнаю!