Param36. Описать функцию InvertStr($$S$$, $$K$$, $$N$$) строкового типа, возвращающую инвертированную подстроку строки $$S$$, содержащую в обратном порядке $$N$$ символов строки $$S$$, начиная с ее $$K$$-го символа. Если $$K$$ превосходит длину строки $$S$$, то возвращается пустая строка; если длина строки меньше $$K+N$$, то инвертируются все символы строки, начиная с ее $$K$$-го символа. Вывести значения функции InvertStr для данной строки $$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 Param36; type St=String; var S:St; i,K,N:integer; Function InvertStr(S:St;K,N:integer):String; var i:integer; Stemp:String; begin if K>Length(s) then InvertStr:='' else begin if K+N-1>Length(s) then N:=Length(s)-K+1; for i:=K+N-1 downto K do Stemp:=Stemp+S[i]; end; InvertStr:=Stemp; end; begin Write('S:'); Readln(S); for i:=1 to 3 do begin Write('K: '); readln(K); Write('N: '); readln(N); Writeln(InvertStr(S,K,N)); end; end. |
Решение используя функцию Copy:
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 |
program Param36; type Str=String; var S:Str; i,K,N:integer; Function InvertStr(S:Str;K,N:integer):String; var i:integer; begin S:=Copy(S,K,N); Result:=''; for i:=Length(S) downto 1 do Result:=Result+S[i]; end; begin Write('S:'); Readln(S); for i:=1 to 5 do begin Write('K: '); readln(K); Write('N: '); readln(N); Writeln(InvertStr(S,K,N)); end; end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: