Trang 4 / 72 FirstFirst 12345679 ... LastLast
Hiển thị kết quả từ 31 đến 40 / 712
  1. #31
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    while st[1] = ' ' then delete (st,1,1);

    while st[length(st)] = ' ' then delete (st,length(st),1);

    for i:=1 to length(st) do while st[i+1] =' ' do delete (st,i+1,1);

    s[1]:=upcase (s[1]) ; for i:=2 to length(s) do if s[i-1]=' ' then s[i]:=upcase(s[i])
    else
    if (s[i]=upcase(s[i])) and(s[i]<> ' ') then s[i]:=chr(ord(s[i])+32);
    writeln(s);

    bo kiểm tra đúng hay ko nha, cứ sửa thoải mái!

    [=========> Bổ sung bài viết <=========]

    bo làm bài chuỗi mẹ, chuỗi con mà bld đã post ở bài trước đi
    Được sửa bởi bld lúc 10:00 ngày 25-06-2008 Reason: Bổ sung bài viết

  2. #32
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    bước 1 đúng!
    bước 2 cũng không sai!
    bước 3 theo tôi nên làm như thế này
    for i:=1 to length(st) do
    while (st[i]=' ') and (st[i+1]=' ') do delete(st,i+1,1) ;
    bước 4:thì ok rồi!!
    quá tốt! thuật toán hoàn hão hay hay

    này!!
    uses crt;
    var
    sme,scon:string ;
    i,j,e,g:integer ;
    Begin
    writeln(' Nhap chuoi me ');readln(sme) ;
    writeln(' Nhap chuoi con ');readln (scon) ;
    i:=1 ;
    while i<= length(scon) do
    begin
    for j:=1 to length(sme) do
    if scon[i]=sme[j] then
    begin
    if i<>1 then e:=j Else g:=j ;
    end;
    inc(i) ;
    end;
    writeln(' Vi tri cua chuoi con la tu ',g,' den ',e);
    readln
    end.

  3. #33
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    hi hi bước 3 là bị sơ suất chứ 0 phải 0 biết nha!
    sorry, bắt bo phải post 2 bài ,
    quá tốt! thuật toán hoàn hão hay hay(nguyên văn của bo)
    hehe ,còn jì nữa thì pót luon ha

  4. #34
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    ^^! bld khach sao the!! thôi Bo đê ăn cơm rồi chiều BO lên post cho ha!

  5. #35
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    í í xem lại cái đã,thuật toán của bo chưa trọn vẹn đâu:
    if scon[i]=sme[j] then... bo cần có câu else nữa
    để dễ hiểu hơn bld xin lấy ví dụ như sau:
    sme: accdef
    scom:cde
    => kết quả sẽ in ra : vị trí là từ 2 đến 5 (ồ vậy không đúng rồi!)
    nếu scon[i]=sme[j] mà scon[i+1]<>sme[j+1] thì thuật toán ko đúng rồi
    bo coi lại ,bld có nhầm lẫn gì thì nói nha
    Được sửa bởi bld lúc 14:14 ngày 25-06-2008

  6. #36
    Tham gia
    06-11-2007
    Location
    Hà Nội
    Bài viết
    499
    Like
    5
    Thanked 6 Times in 5 Posts
    Các bạn mới học lập trình nên tuân theo các phong cách lập trình,dễ cho người đọc cũng như khi sửa lỗi .Ví dụ
    Code:
    uses crt;
    var 	sme,scon:string ;
    	i,j,e,g:integer ;
    Begin
    	writeln(' Nhap chuoi me ');readln(sme) ;
    	writeln(' Nhap chuoi con ');readln (scon) ;
    	i:=1 ;
    	while i<= length(scon) do
    		begin
    		for j:=1 to length(sme) do
    			if scon[i]=sme[j] then
    				begin
    				if i<>1 then e:=j Else g:=j ;
    				end;
    			inc(i) ;
    		end;
    	writeln(' Vi tri cua chuoi con la tu ',g,' den ',e);
    	readln
    end.

  7. #37
    Tham gia
    20-06-2008
    Location
    phú quốc
    Bài viết
    91
    Like
    0
    Thanked 0 Times in 0 Posts
    Cái đề chỉnh sửa tên người nhập vào của Bo đưa, đoạn code của bld giải cogai đưa vào máy mà ko chạy được (kì quá)! Cogaihalan giải như thế này thì chạy:

    uses crt;
    var st:string;i:byte;
    begin
    clrscr;
    write('nhap st=');readln(st);
    while st[length(st)]=' ' do delete(st,length(st),1);
    for i:=1 to length(st) do
    if (i=1) and (st[i]=' ') then
    begin
    delete(st,i,1);
    i:=i-1;
    end
    else if (st[i]=' ') and (st[i+1]=' ') then
    begin
    delete(st,i,1);
    i:=i-1;
    end;
    for i:=1 to length(st) do
    if (i=1) or (st[i-1]=' ')then st[i]:= upcase(st[i])
    else if st[i]in ['A'..'Z']then st[i]:=chr(ord(st[i])+32);
    write(st);
    readln
    end.

    Tuy nhiên code hơi dài. Bld chú ý câu lệnh là while...do chứ ko phải while...then đâu nha (tội nghiệp cogai nhập vào y chang, máy báo lỗi miết, hjx)

  8. #38
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    ồ, chào bạn ... cùi bắp (!)
    hihi cho sorry cô gái nha bld lộn while_then suốt...
    bài cô gái bld cho chạy thì
    cô gái biết máy bld báo lỗi chỗ nào rồi đó (i:=i-1(hu hu)) ,
    rồi bld cũng không hiểu chỗ đó luôn (máy nào chủ nấy ...hừ hừ)
    mr.bo có gì giải thích giùm bld chớ bài của côgái thì có nhiều chỗ khó nói lắm....
    chào bạn cùi bắp , bld chưa biết bạn đang ở trình độ nào , có gì bạn giới thiệu cho room cùng biết ha

  9. #39
    Tham gia
    20-06-2008
    Location
    phú quốc
    Bài viết
    91
    Like
    0
    Thanked 0 Times in 0 Posts
    chào 2 bạn Kùi Bắp và vodanh. Bạn vodanh qua xem trang 2 có bài chuỗi đối xứng đó.Lâu lâu mới gặp bld trực tiếp vậy ha. Máy của cogaihalan ko báo lỗi chỗ i:=i-1. Cogai cho dùng lệnh này vì: sau khi xóa i khi i=' ' chuỗi sẽ mất 1 kí tự, nếu kí tự sau i (tạm gọi là j) trước khi xóa là một ' ' nữa thì bây h` theo dòng lệnh for to do biến i sẽ tăng lên 1 đv, ở chuỗi mới i sẽ đứng ở vị trí thứ 2, tức là bỏ qua, ko kiểm tra j
    hiểu ko mà chẳng thấy reply lại vậy bld. Mà lệnh i:=i-1 máy bạn báo lỗi cung~ có thể là để tránh trường hợp vòng lặp ko có lối thoát và dẫn đến treo máy khi thay đổi giá trị của biến điều khiển i.
    Được sửa bởi cogaihalan123 lúc 15:01 ngày 25-06-2008 Reason: chỉnh sửa bài viết

  10. #40
    Tham gia
    27-05-2008
    Location
    phu quoc
    Bài viết
    128
    Like
    0
    Thanked 13 Times in 5 Posts
    Quote Được gửi bởi bld View Post
    í í xem lại cái đã,thuật toán của bo chưa trọn vẹn đâu:
    if scon[i]=sme[j] then... bo cần có câu else nữa
    để dễ hiểu hơn bld xin lấy ví dụ như sau:
    sme: accdef
    scom:cde
    => kết quả sẽ in ra : vị trí là từ 2 đến 5 (ồ vậy không đúng rồi!)
    nếu scon[i]=sme[j] mà scon[i+1]<>sme[j+1] thì thuật toán ko đúng rồi
    bo coi lại ,bld có nhầm lẫn gì thì nói nha
    ừh! BO cám ơn bld nha! Bo hiểu rồi!
    Quote Được gửi bởi BeatOfAngle View Post
    Các bạn mới học lập trình nên tuân theo các phong cách lập trình,dễ cho người đọc cũng như khi sửa lỗi
    tôi thấy nên thế này!!!

    qui định phòng:= qui định phòng + cái này

    nhớ nha!
    chỉ cấn thêm chữ code ở đầu và /code ở cuối thôi( nhớ cho 2 chữ đó trong dấu []) nha!

    [=========> Bổ sung bài viết <=========]

    Code:
     uses crt;
    var st:string;i:byte;
    begin
    clrscr;
    write('nhap st=');readln(st);
    while st[length(st)]=' ' do delete(st,length(st),1);
    for i:=1 to length(st) do
    if (i=1) and (st[i]=' ') then
       begin
            delete(st,i,1);
            i:=i-1;
       end
    else if (st[i]=' ') and (st[i+1]=' ') then
         begin
              delete(st,i,1);
              i:=i-1;
         end;
    for i:=1 to length(st) do
    if (i=1) or (st[i-1]=' ')then st[i]:= upcase(st[i])
    else if st[i]in ['A'..'Z']then st[i]:=chr(ord(st[i])+32);
    write(st);
    readln
    end.
    để Bo sửa bài của Cô Gái nha!!
    cái đoạn code dùng để xóa các kí tự trắng đầu thì chỉ cần dùng tương tự nhưng bước xóa các kí tự trắng cuối thôi
    while s[1]=' ' do delete(s,1,1);
    nếu dùng như Cô gái là có hàng tá lệnh thừa tốn nhiều bộ nhớ!
    thuật toán của côgái thường rất dài!!côgái nên rút ngắn bớt bằng cách tìm ra cách dòng lệnh thường.cách điều kiện thừa vd:
    Code:
    if (i=1) and (st[i]=' ') then
    tại sao không làm thành if s[1]=' ' then
    Được sửa bởi Mr.Bo_Aloha lúc 15:06 ngày 25-06-2008 Reason: Bổ sung bài viết

Trang 4 / 72 FirstFirst 12345679 ... LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •