Param43. Описать функцию DeCompressStr($$S$$) строкового типа, восстанавливающую строку, сжатую процедурой CompressStr (см. задание Param42). Параметр $$S$$ содержит сжатую строку; восстановленная строка является возвращаемым значением функции. С помощью функции DeCompressStr восстановить пять данных сжатых строк.
Решение:
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 35 36 37 38 39 40 41 42 43 44 45 46 |
program Param43; type St=String; SArray= array [1..10] of string; var S:St; i,N:integer; W:SArray; function DeCompressStr(S:St):St; var i,i2,Num,error:integer; Stemp,SNum:String; C:Char; begin i:=0; Result:=''; While i<=length(s) do begin inc(i); C:=S[i]; if (i=length(S)) or (S[i+1]<>'{') then Num:=1 else begin inc(i,2); SNum:=''; while S[i]<>'}' do begin SNum:=SNum+S[i]; inc(i); end; val(SNum,Num,error); end; for i2:=1 to Num do result:=result+C; end; end; begin for i:=1 to 5 do begin Write('S:'); Readln(S); Writeln(DeCompressStr(S)); end; end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: