Param37. Описать функцию PosSub($$S_0$$, $$S$$, $$K$$, $$N$$) целого типа, возвращающую номер позиции, начиная с которой в строке $$S$$ содержится первое вхождение строки $$S_0$$, причем анализируются только $$N$$ символов строки $$S$$, начиная с ее $$K$$-го символа (таким образом, PosSub обеспечивает поиск в подстроке). Если $$K$$ превосходит длину строки $$S$$, то возвращается $$0$$, если длина строки меньше $$K+N$$, то анализируются все символы строки, начиная с ее $$K$$-го символа. Если в требуемой подстроке строки $$S$$ вхождения $$S_0$$ отсутствуют, то функция возвращает $$0$$. Вывести значения функции PosSub для данных строк $$S_0$$, $$S$$ и каждой из трех пар положительных целых чисел: ($$K_1$$, $$N_1$$), ($$K_2$$, $$N_2$$), ($$K_3$$, $$N_3$$).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
program Param37; type Str=String; var S,S0:Str; i,K,N:integer; Function PosSub(S0,S:Str;K,N:integer):Integer; var i0,i:integer; begin if K>Length(s) then PosSub:=0 else begin S:=Copy(S,K,N); PosSub:=K+Pos(S0,S)-1; end; end; begin Write('S:'); Readln(S); Write('S0:'); Readln(S0); for i:=1 to 3 do begin Write('K: '); readln(K); Write('N: '); readln(N); Writeln(PosSub(S0,S,K,N)); end; end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: