Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Исключение символов расположенных между круглыми скобками

Автор: dream-x 13.04.2008 19:40


program pr;
uses crt;
var
i,k,c,g,a,b:integer;
s,st:string;
procedure stringi(s:string; var st:string);
begin
i:=0;
for i:=a to b-2 do
begin
delete(s,a+1,1);
writeln('str:',s);
end;
end;
begin
clrscr;
writeln('vvedite str: '); read(s);
for i:=1 to length(s) do
begin
stringi(s,st);
break;
end;
end.



Здравствуйте Уважаемые гуру этого раздела! Не могли бы вы мне помочь с решением задачи: Из произвольной последовательности символов исключить группы символов, расположенных между круглыми скобками. В этом коде я написал для выражений типа "ыовар(фыв)" так работает а как сделать чтобы все работало при "ыва((фыв)фыв))фыв(фыв))". Пожалуйста!

Автор: renesko1 13.04.2008 20:15

У тебя


procedure stringi(s:string; var st:string);
begin
i:=0;
for i:=a to b-2 do // где ты описываешь переменные a, b, i в локальных переменных их
begin //нет и через параметры ты их не передаешь
delete(s,a+1,1);
writeln('str:',s);
end;
end;



Поищи в поиске таких задач было уйма.

Автор: Гость 13.04.2008 20:18

Цитата(renesko1 @ 13.04.2008 16:15) *

У тебя

procedure stringi(s:string; var st:string);
begin
i:=0;
for i:=a to b-2 do // где ты описываешь переменные a, b, i в локальных переменных их
begin //нет и через параметры ты их не передаешь
delete(s,a+1,1);
writeln('str:',s);
end;
end;



Поищи в поиске таких задач было уйма.


Эти переменные глобальные это я для простоты мне надо чтобы в любом выражении он удалял все что в скобках!!

Автор: Гость 13.04.2008 20:19

Цитата(renesko1 @ 13.04.2008 16:15) *

Поищи в поиске таких задач было уйма.

А ссылочку кинуть не сможешь))

Автор: volvo 13.04.2008 20:20

Если скобки не пересекаются - то вот так:

var
i, p: integer;
start: integer;
s: string;
begin
s:= '((dkhdkjh)k(d)gf) (dlkjgff(fsad(ff) (ff))flsdkfj)';

start := 0;
i := 1;
while i <= length(s) do begin
if s[i] = '(' then start := i
else if (start > 0) and (s[i] = ')') then begin
delete(s, start + 1, i - start - 1);
i := start + 1;
start := 0;
writeln(s);

while (i < length(s)) and (s[i] <> '(') do inc(i);
dec(i);
end;
inc(i);
end;
end.


Автор: dream-x 13.04.2008 20:25

Цитата(volvo @ 13.04.2008 16:20) *

Если скобки не пересекаются - то вот так:

var
i, p: integer;
start: integer;
s: string;
begin
s:= '((dkhdkjh)k(d)gf) (dlkjgff(fsad(ff) (ff))flsdkfj)';

start := 0;
i := 1;
while i <= length(s) do begin
if s[i] = '(' then start := i
else if (start > 0) and (s[i] = ')') then begin
delete(s, start + 1, i - start - 1);
i := start + 1;
start := 0;
writeln(s);

while (i < length(s)) and (s[i] <> '(') do inc(i);
dec(i);
end;
inc(i);
end;
end.




СПАСИБО БОЛЬШОЕ (щас на форуме зарегюсь)

Автор: dream-x 13.04.2008 20:32

volvo еще тебе большое спасибо за твой сайт я просто для пятнашек меню делал и там все понял smile.gif