Bài lập trình phần Chuỗi

M

megamanxza

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Các bạn ơi, mình có một bài lập trình Pascal khó, cần mọi người giúp:
Viết chương trình nhập một xâu kí tự từ bàn phím, in ra màn hình xâu sau khi nén.
VD: Nhap xau ky tu: AABBCDEEESSS
Xau sau khi giai nen: 2A2BCD3E3S
Các bạn nhớ ghi code của chương trình dưới dạng Pascal ra nha! Mình đã biết thuật toán nhưng khi làm nó cứ báo lỗi "Exited with Exitcode=201" không à! Please help me!
 
C

cuong276

Đây! Không biết có đúng không nữa. Bạn thử text nha.
Mã:
var s,st,s1:string;
    i,k,d,dem,code:integer;
    j:char;
function ktstn(a:char):boolean;
var j:char;
    kt:boolean;
begin
     kt:=true;
     for j:='1' to '9' do
         if a=j then
            begin
                 kt:=false;
                 break;
            end;
     ktstn:=kt;
end;
begin
     write('nhap s='); readln(s);
     d:=0;
     for i:=1 to length(s) do
         for j:='1' to '9' do
             if s[i]=j then inc(d);
     if d=0 then
        begin
             st:='';
             dem:=1;
             for i:=1 to length(s) do
                 begin
                      if s[i]=s[i+1] then inc(dem);
                      if s[i]<>s[i+1] then
                         begin
                              if dem=1 then st:=st+s[i];
                              if dem>1 then
                                 begin
                                      str(dem,s1);
                                      st:=st+s1+s[i];
                                      dem:=1;
                                 end;
                         end;
                 end;
             writeln('day sau khi doi la:');
             write(st);
        end
     else
         begin
              st:='';
              for i:=length(s) downto 1 do
                  begin
                       if (ktstn(s[i])=true) and (ktstn(s[i-1])=true) then st:=s[i]+st;
                       if (ktstn(s[i])=true) and (ktstn(s[i-1])=false) then
                          begin
                               val(s[i-1],dem,code);
                               for k:=1 to dem do st:=s[i]+st;
                          end;
                  end;
              writeln('day sau khi doi la:');
              write(st);
         end;
     readln;
end.
 
Top Bottom