Привет всем! Люди, помогите решить следущую задачу. Дана строка. Вывести все символы, находящиеся в скобках. Вот программка, но почему-то не хочет работать:
Код
Program mnogo_scobok; Uses Crt; var s,s1:string; p1,p2,i:byte; begin clrscr; write('Please, input string >'); readln(s); s1:=''; p1:=pos('(',s); p2:=pos(')',s); while (p1 and p2)<>0 do begin for i:=p1+1 to p2-1 do s1:=s1+s[i]; delete(s,p1,p2-p1+1); p1:=pos('(',s); p2:=pos(')',s); end; writeln; writeln(s1); writeln; writeln('Press any key...'); readkey; end.
Вот ещё алгоритм, на котором, как мне кажется, можно легко понять работу программы.
И вот эту задачку, а то что-то даже в голову не идёт: Определить имеются ли в двумерном массиве элементы со значениями, содержащими цифру «1» (например, 105)
Эскизы прикрепленных изображений
Автор: volvo 2.05.2008 14:27
Program mnogo_scobok; Uses Crt; var s, s1: string; inside: boolean; i: byte; begin clrscr; (* write('Please, input string >'); readln(s); *) s := 'this (is) the test (of) (input) string';
s1 := ''; inside := false; for i := 1 to length(s) do case s[i] of '(': inside := true; ')': inside := false; else if inside then s1 := s1 + s[i]; end;
writeln(s1); writeln; writeln('Press any key...'); readkey; end.
Так будет гораздо проще (если только скобки не могут быть вложенными и расставлены правильно)...
Насчет второй задачи - насколько я понимаю, речь о двумерном массиве чисел? Так в FAQ-е есть алгоритм разбиения числа на цифры без перевода в строку, вот и разбиваешь, следя за тем, есть ли среди полученных цифр 1, или нет...
Автор: klem4 2.05.2008 14:50
Цитата
если только скобки не могут быть вложенными и расставлены правильно
тогда еще вот такой вариант:
procedure Print(s: string); var p, q: byte; begin p := pos('(', s); if p > 0 then begin q := pos(')', s); writeln(copy(s, p + 1, q - p - 1)); Print(copy(s, q + 1, 255)); end; end;
Автор: acid_burn 2.05.2008 18:19
Спасибо всем. Помогите решить следущую задачку. Дано предложение. Между словами ровно один пробел. Выделить в нём все слова. P.S Люди, почему у меня никому рейтинг поднимать нельзя???
Автор: klem4 2.05.2008 18:48
Цитата
Помогите решить следущую задачку. Дано предложение. Между словами ровно один пробел. Выделить в нём все слова.