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 ạ
2 câu trả lời
*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
Ở 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á