Написать функцию, заменяющую подстроку, которая начинается с первого вхождения в строку s открывающей квадратной скобки и заканчивается соответствующей ей закрывающей квадратной скобкой, на строку s1, и возвращающую подстроку, заключенную между скобками в качестве своего значения.
Глобальные переменные:
Параметры функции:
Переменные в функции:
var s, s_in, s_out: string; function change_out2in(var fs: string; fs_in: string): string; var p1, p2, i, count: byte; begin p1 := 0; for i:=1 to length(fs) do if fs[i] = '[' then begin p1 := i; break; end; p2 := 0; if p1 0 then begin count := 0; for i:=p1+1 to length(fs) do if fs[i] = '[' then count := count + 1 else if fs[i] = ']' then if count = 0 then begin p2 := i; break; end else count := count - 1; end; if p2 0 then begin change_out2in := copy(fs,p1+1,p2-p1-1); delete(fs,p1,p2-p1+1); insert(fs_in,fs,p1); end else change_out2in := 'BAD STRING. NOT CHANGE!'; end; begin write('s: '); readln(s); write('s_in: '); readln(s_in); s_out := change_out2in(s, s_in); writeln('s: ', s); writeln('s_out: ', s_out); end.
Результаты тестирования программы:
s: [what] big tee and [coffee] s_in: hello s: hello big tee and [coffee] s_out: what
s: hello [who]... s_in: iam s: hello iam... s_out: who
s: hello [bom [ye (ll]) ] trolls! s_in: world s: hello world trolls! s_out: bom [ye (ll])
s: dk[kd[dkfj] s_in: s s: dk[kd[dkfj] s_out: BAD STRING. NOT CHANGE!
Комментарии
Логика не совсем верная. К
Логика не совсем верная.
К примеру:
так как отсчёт должен идти симметрично с конца.