Bạn hãy ĐĂNG NHẬP để sử dụng nhiều chức năng hơn

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

Thảo luận trong 'Học lập trình' bắt đầu bởi megamanxza, 4 Tháng mười hai 2012.

CHIA SẺ TRANG NÀY

Lượt xem: 1,351

  1. megamanxza

    megamanxza Guest

    Sổ tay hướng dẫn sử dụng HMforum phiên bản mới


    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!
     
  2. cuong276

    cuong276 Guest


    Đâ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.