Viết chương trình để nén và giải nén một xâu ký tự . Ví dụ: Xâu 'AAAABBBCDDDDDDDEEF' sau khi nén sẽ trở thành '4A3BC7D2EF'.

Viết chương trình để nén và giải nén một xâu ký tự . Ví dụ: Xâu 'AAAABBBCDDDDDDDEEF' sau khi nén sẽ trở thành '4A3BC7D2EF'.

Trả lời

Lời giải:

Chương trình nén xâu:

uses crt;

var s,t,k:string;

i,d:longint;

begin

clrscr;

write('Nhap xau: '); readln(s);

d:=1;

for i:=2 to length(s) do

begin

if s[i]=s[i-1] then inc(d);

if (s[i]<>s[i-1]) then

begin

str(d,t);

if d>1 then k:=k+t+s[i-1] else k:=k+s[i-1]; d:=1;

end;

if i=length(s) then begin str(d,t);

if d>1 then k:=k+t+s[i] else k:=k+s[i];

end;

end;

write('Xau sau khi nen: ',k);

readln

end.

Chương trình giải nén xâu:

Uses crt;

Var St,St1,x:string;

i,j,k,l:longint;

Begin

Clrscr;

readln(St);

For i:=1 to length(St) do

If (St[i] in ['a'..'z']) then

If not (St[i-1] in ['0'..'9']) then Insert('1',St,i);

For i:=1 to length(St) do

Begin

If St[i] in ['0'..'9'] then

For j:=i+1 to length(St) do

If St[j] in ['a'..'z'] then break;

x:=copy(St,i,j-i);

Val(x,k);

For l:=1 to k do St1:=St1+St[j]; end;

write(St1);

readln

end.

Câu hỏi cùng chủ đề

Xem tất cả