Страница 1 из 1

Задача на строки.

Добавлено: 24 май 2009, 14:15
Dimak123
Помогите пожалуйста, я не могу решить задачу на Delphi!

В заданном тексте удалить часть текста, заключенную в скобки (вместе со скобками). И считать, что скобки встречаются неоднократно.

Код: Выделить всё

Program EX_5_STRING;
{$APPTYPE CONSOLE}
Var a: string[60];
         i,k: integer;
         b: array [1..200] of string;
Begin
Writeln('Vvedite stroky');
 Readln(a);
For i:= 1 to length(a) do
if a[i]='(' then   delete(a,i,length(a));

For k:= 1 to length(a) do
if a[k]=')' then   delete(a,k,length(a)-i);
Writeln(a);
Readln;   end.

Re: Строки.

Добавлено: 24 май 2009, 14:43
Sheka
если скобки не вложеные - должно подойти, если вложеные - используй счетчик - чтобы закрывался по последней. :cool:

Код: Выделить всё

procedure p1;
var 
  b:boolean;
  c:char;
begin
b:=true;
while not eof(fin) do begin 
  read(fin,c);
  if c="(" then b:=false;
  if b=true then write(fout,c);
  if c=")" then b:=true;
  end;
end;

Re: Строки.

Добавлено: 25 май 2009, 18:08
Dimak123
Что-то она у меня никак не получается. Напишите пожалуйста программу полностью.

Re: Строки.

Добавлено: 25 май 2009, 22:27
Sheka
Dimak123 писал(а):Что-то она у меня никак не получается. Напишите пожалуйста программу полностью.

сколько платишь? :cool:

или хотя бы предоставь свои старания, чтобы можно было исправить.

Re: Строки.

Добавлено: 26 май 2009, 09:35
Dimak123
Программа вроде работает, но не срабатывает при повторном раскрытии скобок.

Код: Выделить всё

Program EX_5_STRING;
{$APPTYPE CONSOLE}
Var a: string;
         i,k: integer;
         b: array [1..200] of string;
Begin
Writeln('Vvedite stroky');
 Readln(a);
repeat
inc(i);
Until a[i]='(';
For k:= 1 to length(a) do
 begin
b[length(a)-k+1]:=a[k];
 end;
k:=0;
repeat inc(k);
until b[k]=')';
delete(a,i,length(a)-k-i+2);
Writeln(a);
Readln;
end.