Помощь - Поиск - Пользователи - Календарь
Полная версия: Исключение символов расположенных между круглыми скобками
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
dream-x

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
У тебя

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;



Поищи в поиске таких задач было уйма.
Гость
Цитата(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;



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


Эти переменные глобальные это я для простоты мне надо чтобы в любом выражении он удалял все что в скобках!!
Гость
Цитата(renesko1 @ 13.04.2008 16:15) *

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

А ссылочку кинуть не сможешь))
volvo
Если скобки не пересекаются - то вот так:

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
Цитата(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
volvo еще тебе большое спасибо за твой сайт я просто для пятнашек меню делал и там все понял smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.