Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Mời anh em Vn-Zoom tham gia ASUS EXPO 2014

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Tuyển Mod box Linux và MacOS

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tuyển thành viên nhóm Reviews diễn đàn

Tuyển BQT VN-Zoom
kết quả từ 1 tới 11 trên 11
  1. #1
    m4u_cf's Avatar
    m4u_cf vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    May 2011
    Bài
    69
    Cảm ơn
    1
    Điểm
    9/9 bài viết
    VR power
    0

    Default Giúp bài tập xóa kí tự trùng trong pascal

    Đề: Cho chuỗi kí tự vd ababab hãy xóa các kí tự trùng chỉ giữ lại 1 kí tự, vd bababa còn lại ba
    AI giúp mình với đang cần gấp
    thanks trước

  2. #2
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.777
    Cảm ơn
    1.540
    Điểm
    4.122/2.748 bài viết
    VR power
    0

    Default

    Trích m4u_cf View Post
    Đề: Cho chuỗi kí tự vd ababab hãy xóa các kí tự trùng chỉ giữ lại 1 kí tự, vd bababa còn lại ba
    AI giúp mình với đang cần gấp
    thanks trước
    cách thô sơ nhất là duyệt từng ký tự trong chuỗi, so sánh ký tự đó với các ký tự đứng trước nó xem có cái nào giống nó ko, có thì del nó

    Code:
    for i:=2 to length(str) do
     for j:=1 to i do
      if str[i]=str[j] then begin
       delete(str,i,1);
       dec(i);{có thể không cần cái này, bạn tự test nhá}
       break;
      end;

  3. #3
    mikelhpdatke's Avatar
    mikelhpdatke vẫn chưa có mặt trong diễn đàn Rìu Chiến Chấm
    Tham gia
    Jul 2010
    Đến từ
    Bắc Giang
    Bài
    2.349
    Cảm ơn
    1.695
    Điểm
    1.503/824 bài viết
    VR power
    0

  4. #4
    Englandhuynh's Avatar
    Englandhuynh vẫn chưa có mặt trong diễn đàn ¨°o.O ║╦ Programmer ║╦ O.o°
    Tham gia
    Oct 2011
    Đến từ
    TPHCM
    Bài
    271
    Cảm ơn
    144
    Điểm
    105/71 bài viết
    VR power
    0

    Default

    Có, ta sẽ dùng Skq để lưu kết quả
    Mình làm thế này
    Code:
    for i:=1 to length(s) do
       begin
           skq:=skq+s[i]; {Them ki tu vao skq}
           t:=1;
           repeat
              t:=pos(skq[length(skq)],s);{tim vi tri cua cac vi tri co ki tu giong ki tu vua them vao skq}
              if s[t]=skq[length(skq)] then delete(s,t,1); { Xoa no di}
           until t=0;{den khi nao ko con tim thay nua}
      end;
    Thay đổi nội dung bởi Englandhuynh; 08-06-2012 lúc 15:12.

  5. Có 1 thành viên cảm ơn Englandhuynh cho bài viết này:
    mikelhpdatke (08-06-2012)

  6. #5
    m4u_cf's Avatar
    m4u_cf vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    May 2011
    Bài
    69
    Cảm ơn
    1
    Điểm
    9/9 bài viết
    VR power
    0

    Default

    bạn Englandhuynh có thể giúp mình cách khác gọn hơn và dễ tư duy hơn nữa không. mình làm được bài này với code sau, mọi ng xem và cho ý kiến. đã test ok

    for i:=1 to length(s) do
    begin
    j:=i+1;
    repeat
    ì s[i]=s[j] then delete(s,j,1)
    else j:=j+1;
    until j>length(s)
    end;
    writeln(s);
    readln
    end.

  7. Có 1 thành viên cảm ơn m4u_cf cho bài viết này:
    Dragon Water (21-02-2013)

  8. #6
    Englandhuynh's Avatar
    Englandhuynh vẫn chưa có mặt trong diễn đàn ¨°o.O ║╦ Programmer ║╦ O.o°
    Tham gia
    Oct 2011
    Đến từ
    TPHCM
    Bài
    271
    Cảm ơn
    144
    Điểm
    105/71 bài viết
    VR power
    0

    Default

    Thì code mình post lên đó
    Thuật toán của bạn là xét từng kí tự rùi tìm phía sau nó có kí tự trùng thì del
    Mà thay vì dùng biến j bạn có thể dùng hàm pos để tìm
    Cách này là gọn nhất rùi đó

  9. #7
    hungno1205's Avatar
    hungno1205 vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Nov 2012
    Bài
    1
    Cảm ơn
    0
    Điểm
    0/0 bài viết
    VR power
    0

    Default

    for i:=1 to (length(ST)-1) do
    for j:=i+1 to length(ST) do
    if ST[i]=ST[j] then
    delete(ST,j,1)

  10. #8
    tansonpro9x's Avatar
    tansonpro9x vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jun 2012
    Đến từ
    Hà Nội, Việt Nam
    Bài
    549
    Cảm ơn
    37
    Điểm
    78/71 bài viết
    VR power
    0

    Default

    Trích hungno1205 View Post
    for i:=1 to (length(ST)-1) do
    for j:=i+1 to length(ST) do
    if ST[i]=ST[j] then
    delete(ST,j,1)
    cách của bạn ko thể del các kí tự giống nhau nhưng ko liền nhau đc, vd abaabba->ababa. theo mih dùng pos của Englandhuynh là hay nhất
    p/s: bài này đã lâu rùi và cũng đã có đáp án rùi, bạn ko nên đào nó lên nữa
    Phải công nhận rằng bạn rất kiên nhẫn nhấn chuột tới 30 lần để đọc được dòng chữ vô nghĩa này

  11. #9
    Tham gia
    Mar 2013
    Bài
    1
    Cảm ơn
    0
    Điểm
    0/0 bài viết
    VR power
    0

    Cool

    writeln('Xoa ky tu trung');
    s1:='';
    for i:= 1 to length(s) do
    if s[i]<>s[i+1] then
    s1:=s1+s[i];
    writeln(s1);


  12. #10
    tansonpro9x's Avatar
    tansonpro9x vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jun 2012
    Đến từ
    Hà Nội, Việt Nam
    Bài
    549
    Cảm ơn
    37
    Điểm
    78/71 bài viết
    VR power
    0

    Default

    Trích danganhhao123 View Post
    writeln('Xoa ky tu trung');
    s1:='';
    for i:= 1 to length(s) do
    if s[i]<>s[i+1] then
    s1:=s1+s[i];
    writeln(s1);

    hơi tốn bộ nhớ

  13. #11
    lyvinhloi.cntt's Avatar
    lyvinhloi.cntt vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Dec 2012
    Bài
    650
    Cảm ơn
    64
    Điểm
    164/152 bài viết
    VR power
    0

    Default

    Trích danganhhao123 View Post
    writeln('Xoa ky tu trung');
    s1:='';
    for i:= 1 to length(s) do
    if s[i]<>s[i+1] then
    s1:=s1+s[i];
    writeln(s1);

    Nghi sai lắm nè
    1. Khi I=Length(s) mà đi so sánh với I+1 là vượt ra giới hạn xâu sẽ báo lỗi
    2. bababa thì so sánh kiểu đó cũng chỉ so sánh a với b, thấy khác nhau ( rõ ràng ) thì gán vào S1, thế thì nó ra xâu cũ rồi ...
    Điều quan trọng là Bạn hôm nay có giỏi hơn Bạn hôm qua không, chứ không phải Bạn có giỏi hơn người ta hay không.
    Email liên hệ: lyvinhloi.cntt@gmail.com

 

 

Quyền sử dụng

  • 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ể tự sửa bài viết của mình
  •