Trang 1 của 3 123 CuốiCuối
Kết quả 1 đến 10 của 26
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    2

    Xóa kí tự trong xâu

    Viết chương trình nhập vào một xâu bất kì gồm các kí tự từ 'A' đến 'Z', in ra màn hình xâu sau khi đã xoá bỏ tất cả các kí tự 'A'.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    7
    Cách 1 thì dùng xâu s2:=''
    S2:='';
    For i:=1 to length(S1) do
    IF S<>'A' then S2:=S2+S1;
    write(S2);
    Các bạn hãy thử viết chương trình nhưng không dùng xâu S2, dùng thủ tục Delete xem sao nhé!

  3. #3
    Ngày tham gia
    Feb 2016
    Bài viết
    24
    Mã:
    var   i:integer;
          s:string;
    
    begin
          readln(s);
          for i:=length(s) downto 1 do
                if s[i]='a' then delete(s,i,1);
          writeln(s);
          readln
    end.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    bẠN HANG_VT AH, cám ơn bạn. Tại sao bạn lại nghĩ ra vòng lặp lùi, mà nếu dùng thủ tục Delete thì vòng lặp tiến sẽ không xóa được các kí tự 'A' liền nhau.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    Cách khác, dùng vòng lặp tiến:
    Mã:
    var s:string;i:byte;
    begin
             write('Nhap xau s: ');
             readln(s);
             i:=1;
             while (i<=length(s)) do
                     if s[i]='A' then delete(s,i,1)
                        else inc(i);
             write('Xau moi la:',s);
             readln;
    end.
    Cách này tương tự cách chị Hằng thôi, chỉ là đổi lại vòng lặp tiến.

  6. #6
    Ngày tham gia
    Nov 2015
    Bài viết
    2
    bạn Binh_nguyen thu làm cách dùng vòng lặp For tiến xem sao

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    Tại sao mình viết chương trình như thế này thì không được nhỉ
    For i:=1 to length(S) do
    While S='A' then Delete(S,i,1);
    write(S);

    Còn viết vòng For như thế này thì tất nhiên là không được rồi
    For i:=1 to length(S) do if S='A' then Delete(S,i,1); thì sẽ không xóa hết các chữ 'A' liền nhau
    Vì sau khi xóa thì độ dài của xâu sẽ thay đổi, mỗi lần xóa sẽ giảm 1 đơn vị.

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    "If ... Then ..." hoặc là "While ... Do ..." chứ bạn.
    For i:=1 To Length(s) Do
    If s = 'A' Then Begin Delete(s,i,1); Dec(i); End;
    Write(s);

    Xem cách này thử xem, mình chưa thử.

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    Trích dẫn Gửi bởi binhnguyenLQD-kg
    Cách khác, dùng vòng lặp tiến:
    Mã:
    var s:string;i:byte;
    begin
             write('Nhap xau s: ');
             readln(s);
             i:=1;
             while (i<=length(s)) do
                     if s[i]='A' then delete(s,i,1)
                        else inc(i);
             write('Xau moi la:',s);
             readln;
    end.
    Cách này tương tự cách chị Hằng thôi, chỉ là đổi lại vòng lặp tiến.
    tương tự nhưng mà hem có đúng

    Trích dẫn Gửi bởi HASOGROUP
    "If ... Then ..." hoặc là "While ... Do ..." chứ bạn.
    For i:=1 To Length(s) Do
    If s = 'A' Then Begin Delete(s,i,1); Dec(i); End;
    Write(s);

    Xem cách này thử xem, mình chưa thử.


    a ơi , trong vòng for , k đc giảm hoặc tăng biến chạy [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

  10. #10
    Ngày tham gia
    Jan 2016
    Bài viết
    58
    Trích dẫn Gửi bởi lehang_gb1
    Còn viết vòng For như thế này thì tất nhiên là không được rồi
    For i:=1 to length(S) do if S='A' then Delete(S,i,1); thì sẽ không xóa hết các chữ 'A' liền nhau
    Vì sau khi xóa thì độ dài của xâu sẽ thay đổi, mỗi lần xóa sẽ giảm 1 đơn vị.


    Giải thix của bạn k đúng , code của mình n giảm nhưng vẫn đúng đây thôi

Trang 1 của 3 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •