For i:=1 to length do If s[i]:=’ ‘ then delete(s,i,1) Khi cho kết quả thứ nhất S:= truong trung hoc pho thong (thì kết quả sẽ xóa hết kí tự trống) Còn

For i:=1 to length do
If s[i]:=’ ‘ then delete(s,i,1)
Khi cho kết quả thứ nhất
S:= truong trung hoc pho thong (thì kết quả sẽ xóa hết kí tự trống)
Còn cho kết quả thứ hai
S:= truong trung hoc pho thong (thi kết quả sẽ không xóa hết kí tự trống)
Mn giải thích giúp em vì sao nó như vậy ạ

0 bình luận về “For i:=1 to length do If s[i]:=’ ‘ then delete(s,i,1) Khi cho kết quả thứ nhất S:= truong trung hoc pho thong (thì kết quả sẽ xóa hết kí tự trống) Còn”

  1. *Test 1: 

    S:= truong trung hoc pho thong thì khi thực hiện chạy từ đầu đến cuối đã biến đổi:

    *Lần 1: gặp khoảng trống ở vị trí số 7 thì nó xóa đi. S:= truongtrung hoc pho thong.

    *Lần 2: gặp khoảng trống ở vị trí số 12 thì nó xóa đi. S:= truongtrunghoc pho thong.

    … 4 lần còn lại S:= truongtrunghocphothong

    *Test 2:

    S:= truong   trung hoc pho thong. Tương tự như test 1:

    *Lần 1: gặp khoảng trống ở vị trí số 7 thì nó xóa đi. S:= truong  trung hoc pho thong.

    *Lần 2: gặp khoảng trống ở vị trí số 8 thì nó xóa đi. S:= truong trunghoc pho thong. Từ đó chương trình đã bỏ quả  khoảng trống ở vị trí số 7 nên kết quả sẽ không xóa hết kí tự trống.

    … 5 lần còn lại S:= truong trunghocphothong

    Bình luận
  2. Ở trường hợp đầu, xét đoạn “truong trung”, khi xoá xong dấu cách thì thành ” truongtrung”, giá trị i tự động tăng lên 1 đơn vị, khi đó s[i] là kí tự r của “trung”, cứ như vậy trong xâu sẽ không còn dấu cách nào

    Còn ở trường hợp sau, xét đoạn “truong  trung” (có 2 dấu cách liền),  ta có s[7]=’ ‘, và s[8]=’ ‘, khi i=7 thì thoả mãn s[i]=’ ‘, kí tự s[7] bị xoá -> độ dài xâu giảm 1 đơn vị, khi đó i đang mang giá trị 7 nhưng thật ra là 8, kết thúc vòng lặp i tăng lên thành 8, s[8]=’t’ (mới). Nói đơn giản là kí tự cách thứ 2 bị bỏ qua nên không bị xoá

    Bình luận

Viết một bình luận