Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 13

Chủ đề: pascal xâu!

  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    5

    pascal xâu!

    cái này em tự ra đề để tăng khả năng tư duy chút.
    nhập xâu s, thay các cụm kí tự 'anh' ở các vị trí chẵn thành cụm kí tự 'em'
    Mã:
    var s1,s2:string;
        k,dem,i:integer;
        key:char;
    begin
     repeat
      write('xau s1:');
      readln(s1);
      k:=length(s1);
      s2:='em';
      dem:=0;
      for i:=1 to k do
      if (s1[i]='a') and(s1[i+1]='n') and(s1[i+2]='h') then
       begin
        dem:=dem+1;
        if( dem mod 2 =0) then
          begin
           delete(s1,i,3);
           insert(s2,s1,i);
          end;
        end;
      write('xau s1 moi la:',s1);
      writeln;
      write('tiep tuc,(C/k)?:');
      readln(key);
      until upcase(key)='K';
      readln;
     end.
    nếu em thay đoạn :
    Mã:
     if (s1[i]='a') and(s1[i+1]='n') and(s1[i+2]='h') then
    bằng:
    Mã:
      while (s1[i]='a') and(s1[i+1]='n') and(s1[i+2]='h')do
    thì máy khi chạy sẽ bị đơ, thế là sao?

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    ú, 2 hôm nay pro pascal đi đâu rồi mà không giải thích hộ bài này đi nhĩ?

  3. #3
    Ngày tham gia
    Nov 2015
    Đang ở
    hà nội
    Bài viết
    17
    chẳng phải đã có topic nói về vấn đề này rồi sao ?

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    cái kia là thay tất cả còn đây chỉ thay ở các vị trí chẵn thôi.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    Trích dẫn Gửi bởi gianghen
    cái kia là thay tất cả còn đây chỉ thay ở các vị trí chẵn thôi.
    vậy chỉ cần thêm 1 lệnh if vào là xong . có khác gì đâu ?

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    9
    thay vô while cơ mà, chứ ai chẳng bít là dùng if then...
    if (s1='a') and(s1[i+1]='n') and(s1[i+2]='h') then

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    - Thế này nhé [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] : Nếu biến dem của bạn mod 2 <> 0 thì s1 vẫn là s1 ban đầu -> s1 vẫn ='a' , s1[i+1] vẫn ='n' , s1[i+2] vẫn ='h' . Vậy vòng while lặp vô hạn.

    - Vẫn chưa hiểu biến dem của bạn làm j` . Xét vị trí chăng, sao k dùng i xét lun nhỉ ?

    - Bài này không cần rườm rà thế. Mình chưa test thử nhưng có chút vấn đề :
    "anh" : 3 kí tự
    "em" : 2 kí tự
    Khi bạn tìm được cụm "anh" đầu tiên = cụm "em" thì liệu vị trí của các cụm "anh" còn lại có ở vị trí cũ nữa k !?
    vd :
    ban đầu : s=aanhaanhoi ( cụm "anh" ở vị trí 1 , 6 )
    lần 1 : aemaanhoi ( cụm "anh" ở vị trí 5 )

  8. #8
    Ngày tham gia
    Nov 2015
    Bài viết
    3
    không phải thế hằng ạ: ví dụ: anh em anh em anh em.thì anh ở các vị trí: 1-3-5( toàn là vị trí lẽ nên nó sẽ giữ nguyên) thế nên mới cần biến dem. cứ 1 lần kí tự'anh' xuất hiện thì tăng lên 1 cho đến khi ở vị trí chẵn thì nó sẽ xóa và thay.

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    mình đã giải thích vấn đề mà bạn hỏi rồi.
    Có lẽ là mình hiểu sai ý của bạn nhưng thay cái if (s1='a') and(s1[i+1]='n') and(s1[i+2]='h') then bằng copy là đc rồi.

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    Trích dẫn Gửi bởi gianghen
    thay vô while cơ mà, chứ ai chẳng bít là dùng if then...
    if (s1='a') and(s1[i+1]='n') and(s1[i+2]='h') then


    ý mình là lệnh if ( điều kiện vị trí của bạn ) bạn ạ .

Trang 1 của 2 12 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
  •