Kết quả 1 đến 10 của 10

Chủ đề: Thay xâu.

  1. #1
    Ngày tham gia
    Dec 2015
    Bài viết
    8

    Thay xâu.

    Đề bài: nhập xâu S bất kì, thay chữ 'anh' bằng chữ 'em'.
    bài này cũng dễ, em muốn tham khảo ý kiền các bác về cách làm sau:
    Mã:
    var S1,S2:string;
         k,i:integer;
    begin
      write('xau S1:');  readln(S1);
      k:=length(S1);
      S2:='em';
      for i:=1 to k do
      while (S1[i] ='a' and s1[i+1]='n' and S1[i+2] ='h') do
       begin
         delete(S1,i,3);
         insert(S2,S1,i);
       end;
      write(xau S1 moi:',S1);
      readln;
      end.
    .
    Cái đoạn :
    Mã:
     while (S1[i] ='a' and s1[i+1]='n' and S1[i+2] ='h') do
    Nếu em thay bằng:
    Mã:
     if (S1[i] ='a' and s1[i+1]='n' and S1[i+2] ='h')then
    thì có sao không, giải thích sự khác nhau?

  2. #2
    Ngày tham gia
    Apr 2016
    Bài viết
    1,886
    mình thì nghĩ chẳng khác gì nhau cả bạn ạ .
    Vì trước while hay if đều có 1 vòng for nên dù là cái nào đi chăng nữa thì cũng chỉ xảy ra 1 lần .

  3. #3
    Ngày tham gia
    Dec 2015
    Bài viết
    41
    Mình đã thử chương trình của bạn rồi bạn có thể dùng while - do hay if - then đều đúng. Ngoài ra bạn còn có thể dùng vòng lặp while - do và hàm pos cũng được.
    Nhưng ví dụ với cum từ khác thì chương trình của bạn sẽ không được:
    Ví dụ nhập vào xâu thay cum tu "anh" bằng từ "Khanh"
    Hay thay từ "ong" bằng cụm từ "con ong ngoan" thì bạn viết như thế nào

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lehang_gb1
    Mình đã thử chương trình của bạn rồi bạn có thể dùng while - do hay if - then đều đúng. Ngoài ra bạn còn có thể dùng vòng lặp while - do và hàm pos cũng được.
    Nhưng ví dụ với cum từ khác thì chương trình của bạn sẽ không được:
    Ví dụ nhập vào xâu thay cum tu "anh" bằng từ "Khanh"
    Hay thay từ "ong" bằng cụm từ "con ong ngoan" thì bạn viết như thế nào
    đề này yêu cầu là thay từ bằng từ mà chứ có phải thay từ bằng cụm từ đâu .

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    7
    Yêu cầu của bạn lehang sẽ được giải quyết bằng việc dùng repeat kết hợp việc nhảy cóc qua từ 'khanh' hoặc 'con ong ngoan'. Hoặc không bạn cũng có thể dùng vòng lặp chạy ngược, không dùng pos.

  6. #6
    Ngày tham gia
    Jan 2016
    Bài viết
    47
    Đây là chương trình tổng quát đúng với mọi trường hợp, các bạn tham khảo
    Mã:
    uses crt;
    Var st,st1,st2,temp:string;
    i:byte;
    Begin
     clrscr;
    write('Nhap vao xau ban dau:'); Readln(st);
    write('Nhap vao xau can tim:'); Readln(st1);
    if pos(st1,st)=0 then
    begin
     writeln('Xau',st1,'khong nam trong xau',st);
     Readln;
     halt;
    end;
    write('Thay the boi xau:'); readln(st2);
    temp:='';
    i:=1;
    while i<=length(St) do
     begin
       if st1=copy(st,i,length(st1)) then
         begin
           temp:=temp+st2;
           i:=i+length(st1);
          end
         else
           begin
              temp:=temp+st[i];
              i:=i+1;
           end;
        end;
        st:=temp;
       write('Xau sau khi duoc thay the:',st);
       Readln
     End.

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    3
    Trích dẫn Gửi bởi lehang_gb1
    Đây là chương trình tổng quát đúng với mọi trường hợp, các bạn tham khảo
    Mã:
    uses crt;
    Var st,st1,st2,temp:string;
    i:byte;
    Begin
     clrscr;
    write('Nhap vao xau ban dau:'); Readln(st);
    write('Nhap vao xau can tim:'); Readln(st1);
    if pos(st1,st)=0 then
    begin
     writeln('Xau',st1,'khong nam trong xau',st);
     Readln;
     halt;
    end;
    write('Thay the boi xau:'); readln(st2);
    temp:='';
    i:=1;
    while i<=length(St) do
     begin
       if st1=copy(st,i,length(st1)) then
         begin
           temp:=temp+st2;
           i:=i+length(st1);
          end
         else
           begin
              temp:=temp+st[i];
              i:=i+1;
           end;
        end;
        st:=temp;
       write('Xau sau khi duoc thay the:',st);
       Readln
     End.
    bài Này hình như không liên quan gì đến nội dung của box này le hang ạ

  8. #8
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Bạn cứ đọc đi rồi sẽ hiểu chương trình thay thế xâu đấy

  9. #9
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Bít là thay thế xâu rồi nhưng mà không liên quan đến nội dung mà tớ yêu cầu,kekeke

  10. #10
    Ngày tham gia
    Mar 2016
    Bài viết
    0
    Ý của bạn lehang là bạn nhập 1 xâu, nhập xâu cần thay thế và nhập xâu thay thế, sau đó thay thế xâu tương ứng. Ý tưởng của bạn lehang đúng là ý tưởng tổng quát nhưng code của bạn lehang có 1 chỗ thừa là với mọi vị trí i, bạn đều lấy ra 1 lượng kí tự đúng bằng lượng kí tự của xâu cần thay thế và bạn so sánh, điều này là không cần thiết, nếu theo cách của bạn thì chỉ cần so sánh kí tự đầu tiên của xâu cần thay thế với kí tự thứ i để biết rằng có cần thay thế ở vị trí thứ i không, và như thế là bạn đủ để kết luận rồi, không cần so sánh toàn bộ như thế đâu.

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
  •