Để tiết kiệm không gian bộ nhớ người ta nén chuỗi theo quy tắc: Nếu có từ 3 kí tự liên tiếp trùng nhau trở lên thì nén thành một con số và 1 kí tự
Yêu cầu: viết chương trình thực hiện công việc sau:
a/ Nhập chuỗi S1 từ b àn phím, nén chuỗi s1 thành chuỗi S2 và xuất S2 ra màn hinh
VD: S1: AABCAAAAACCCCBBB ->S2: AABC5A4C3B
b/ Từ bàn phím nhập chuỗi S2 dưới dạng đã nén, giải nén lại chuỗi S1 ban đầu, xuất kết quả ra màn hình
VD: S2: AABC5A4C3B ->S1: AABCAAAAACCCCBBB
program gyu;
uses crt;
var t,i,j,k,l,p,q:integer;
s,s1,s2,n,sp,ss:string;
st:char;
function xt(s:string):char;
begin
xt:=s[1];
end;
begin
clrscr;
write('Nhap xau 1:');readln(s1);
j:=1;
repeat
t:=0;
s:='';
for i:=j to length(s1) do
if (s1[i]=s1[i+1]) then t:=t+1 else
begin
l:=i;
p:=i+1;
break;
end;
if t>=2 then
begin
for i:=j to l do
s:=s+s1[i];
st:=xt(s);
str(t+1,n);
sp:=sp+n+st;
end else
for i:=j to l do
sp:=sp+s1[i];
j:=p;
until j>length(s1);
writeln('Xau nen:',sp);
writeln;
write('Nhap xau 2:');readln(s2);
j:=1;ss:='';
repeat
val(s2[j],q,l);
if q>=3 then
begin
for k:=1 to q do
ss:=ss+s2[j+1];
j:=j+2;
end else
begin
ss:=ss+s2[j];
j:=j+1;
end;
until j>length(s2);
writeln('Xau giai nen:',ss);
readln
end.
>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<
Và ...
>>> Không bao giờ nói bạn đã thất bại
Cho đến khi đó là nỗi lực cuối cùng của bạn
Và không bao giờ nói rằng:
Đó là nỗi lực cuối cùng của bạn
Cho tới khi bạn đã thành công >>>
~ Mystic Lâm