Viết CT nén xâu kí tự s được nhập từ bàn phím. VD: S='AAABBCDDDD'=>'3A2BC4D' làm ơn ạ

2 câu trả lời

c:=1;dem:=1;//c là chỉ số chỉ ký tự

for i:=2 to length(s) do 

  if s[i]=s[c] then inc(dem) else 

   begin

     write(dem,s[c]);//xuat ra dem va ky tu (3A)

      dem:=1;

      c:=i;

   end;

program oken;
uses crt;
var s:string;
    i,j,dem,k: longint;
    sl: array[1..1000000] of longint;
    a: array[1..1000000] of char;
begin
    clrscr;
    write('Nhap xau: '); readln(s);
    k:=0;
    for i:=32 to 126 do
        begin
            dem:=0;
            for j:=1 to length(s) do
                if chr(i)=s[j] then
                    dem:=dem+1;
            if dem<>0 then
                begin
                    k:=k+1;
                    a[k]:=chr(i);
                    sl[k]:=dem;
                end;
        end;
    for i:=1 to k do
        writeln(a[i],': ',sl[i]);
    readln;
end.

Câu hỏi trong lớp Xem thêm