Xoá Khoảng Trắng Trong Chuỗi - Programming - Dạy Nhau Học Trang chủ » Khoảng Trắng Trong C + + » Xoá Khoảng Trắng Trong Chuỗi - Programming - Dạy Nhau Học Có thể bạn quan tâm Khoảng Trắng Trong Chuỗi Khoảng Trắng Trong C++ Là Gì Khoảng Trắng Trong Css Khoảng Trắng Trong Instagram Khoảng Trắng Trong Js Xoá khoảng trắng trong chuỗi programming c Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 18, 2019, 8:40am #1 (*)Viết chương trình nhập vào 1 chuỗi, cắt ký tự khoảng trắng trong chuỗi sao cho các từ cách nhau bằng 01 khoảng trắng. day la code cua mình: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char s[100]; int i,n,j,dem,lap=0; gets(s); dem=0; n=strlen(s); do { for(i=0;i<n;i++) { if((s[i]==' ')&&(s[i+1]==' ')) { dem++; for(j=i;j<n;j++) { s[j]=s[j+1]; } } } } while(dem==0); printf("Chuoi sau khi cat:\n"); for(i=0;i<(n-dem);i++) { printf("%c",s[i]); } return 0; } nhưng sao nó chỉ xóa được 2 khoảng trắng liên tiếp thôi, nhiều hơn 2 khoảng trắng liên tiếp thì nó chỉ xóa được 1 khoảng trắng,mọi người giúp với xem code mình sai chỗ nào Rok_Hoang (Minh Hoàng) April 3, 2015, 10:07am #2 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char s[100]="MOT HAI BA NAM"; int i,n,j,dem,lap=0; //gets(s); dem=0; n=strlen(s); //do //{ for(i=0;i<n;i++) { if((s[i]==' ')&&(s[i+1]==' ')) { //dem++; for(j=i;j<n;j++) { s[j]=s[j+1]; } n--; //so ki tu cua chuoi giam xuong i--; //sau buoc nay thi i se tang (vong for) nen ta se giam no xuong } } lap++; //} //while(dem==0); printf("Chuoi sau khi cat:\n"); //for(i=0;i<(n-dem);i++) for (i=0;i<n;i++) { printf("%c",s[i]); } return 0; } do vào vòng for thì i sẽ tăng lên nên i sẽ bị dâng lên, nên mình sẽ i-- nó trước khi vào vòng for mình cũng sửa chỗ n–, vì n là độ dài của chuỗi nên làm thế cho logic có ảnh hưởng nha mình thấy vòng while cũng không ổn, nếu như chuỗi không có kí tự space dư thừa thì sẽ bị loop mât… có thể bỏ vòng while đi 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 12:33pm #3 uh để mình thử lại xem lúc đầu em cũng dùng vòng for nhưng kết quả vẫn zay nên thử vòng do while thấy cũng chả khác gì :3 hihi Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 10:14am #5 sao nó chạy vẫn không đúng nhỉ Rok_Hoang (Minh Hoàng) April 3, 2015, 10:18am #6 đúng mà nhỉ “MOT HAI BA NAM” đâu có thiếu nhịp nào đâu 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 10:24am #7 tuc.jpg881×429 66.2 KB xem dùm em sai chỗ nào Rok_Hoang (Minh Hoàng) April 3, 2015, 10:27am #8 Screenshot (82).png1920×1080 186 KB ra đều tăm tắp mà nhỉ? cho xem kết quả đi bạn 1 Like rogp10 (rogp10) split this topic April 8, 2020, 2:38pm #9 A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3 Rok_Hoang (Minh Hoàng) April 3, 2015, 10:37am #10 i-- không phải i++ Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 10:41am #11 úi giời hèn gì nãy giờ không thấy,thank bác nhiệt tình Gio (Gió) April 3, 2015, 12:25pm #12 Code này hình như không xoá được khoảng trắng đầu và cuối Đề yêu cầu là 2 từ cách nhau mới có khoảng trắng thôi 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 12:37pm #13 uh thì chỉ cần 2 từ cách nhau bằng 1 khoảng trắng là ok roi còn cắt đầu và cuối chuỗi thì mình làm được 1 Like Rok_Hoang (Minh Hoàng) April 3, 2015, 1:06pm #14 mình fix code của bạn kia thui cơ mà thêm trường hợp riêng là được mà nhỉ s[i+1]='\0' cái này để xóa đuôi s[0]=' ' cái này để xóa đầu 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 1:37pm #15 Có hàm nào để cắt chuỗi không nhỉ Rok_Hoang (Minh Hoàng) April 3, 2015, 1:40pm #16 Bạn xem hàm memmove nhé, viết khéo léo sẽ thành hàm xóa kí tự xem hàm strtok, thường dùng để cắt chuỗi khi gặp kí tự ngắt 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 1:44pm #17 Giải thích em về hàm strtok dc không anh Rok_Hoang (Minh Hoàng) April 3, 2015, 1:52pm #18 http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok ví dụ có một câu "mot hai ba nam" thì lần đầu tiên truyền chuỗi này vào hàm (kí tự delimiter là space ' ') thì chuỗi còn "mot" tuy nhiên các dữ liệu ở phía sau vẫn còn. Lý do là hàm strtok sẽ làm cho các kí tự space tìm được trở thành '\0'. Lần gọi sau thì nó sẽ nhảy tới vị trí kế tiếp, con trỏ sẽ giữ địa chỉ của chuỗi “hai” (tất nhiên là dữ liệu của chuỗi vẫn còn). Đọc example trong link cho dễ hiểu. Hàm này biến đổi chuỗi nên là chép chuỗi qua chuỗi khác rồi hẵng làm strtok 1 Like Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 1:57pm #19 ồ, mở mang duoc kiến thức thank bác lần nữa Gio (Gió) April 3, 2015, 2:15pm #20 Bài này 1 vòng while là ra, sao lại phức tạp thế #include <stdio.h> #include <string.h> int trim(char * s){ int d=0,i=0,prev=-1; while(s[i]){ if(s[i]==' '&& (prev<0|| s[prev]==' ')){ d++;// 2 ' ' liên tiếp hoăc ' ' ở đầu chuỗi => tăng số kí tự bị xoá }else{ s[i-d]=s[i]; prev=i; } i++; } i-=d;// i is new length //trim right if(i&& s[i-1]==' ') s[i-1]= 0,d++; else s[i]=0; return d; } int main() { char s[100]=" d a b "; int d=trim(s); printf("%s# deleted %d char(s)",s,d); return 0; } 2 Likes Nguy_n_Trung_Ki_t (Nguyễn Trung Kiệt) April 3, 2015, 2:17pm #21 quan trõng nghĩ ko ra vòng while :)) 1 Like next page → DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Khoảng Trắng Trong C + + Đếm Khoảng Trắng Trong Chuỗi C Xóa Khoảng Trắng Trong Chuỗi C Khoảng Trắng Trong C + + Là Gì - Hỏi Đáp Biểu Tượng Cho Khoảng Trắng Trong C Là Gì? - Wake-up Làm Thế Nào để Nhập Chuỗi Có Khoảng Trắng Trong C++? Lập Trình C Bài 25 Đếm Số Khoảng Trắng Trong Chuỗi Hay ... - YouTube [Khóa Học C++] Bài 11 - Whitespace And Basic Formatting - CoderDocs Cách Xóa Khoảng Trắng Của Chuỗi Trong Java - Freetuts Lập Trình C | Tính Khoảng Trắng Trong Chuỗi Ký Tự!please Help [Archive] Cơ Bản Về Chuỗi Ký Tự Trong C++ (An Introduction To Std::string) Một Số Bài Tập Về Chuỗi Kí Tự Trong C++ CÁCH GIẢI ...