Chào mừng bạn đến với HMForum. Vui lòng đă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,465

  1. megamanxza

    megamanxza Guest

    Giảm 25% học phí khi Đặt chỗ Khóa PEN-I 2017 - Click ngay!

    Những phần quà Tết hấp dẫn đang đợi bạn tại diễn đàn HOCMAI


    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.