Thắc Mắc Xóa 1 Phần Tử Và Xóa Nhiều Phần Tử Trong C++ Trang chủ » Xóa Chuỗi Trong Chuỗi C++ » Thắc Mắc Xóa 1 Phần Tử Và Xóa Nhiều Phần Tử Trong C++ Có thể bạn quan tâm Xóa Chuỗi Trong Excel Xóa Chuỗi Trong Java Xóa Chuỗi Trong Python Xoá Chương Trình Mặc định Mở File Xóa Chữ Page 1 Trong Excel Thắc mắc xóa 1 phần tử và xóa nhiều phần tử trong C++ programming c++ HienVienVu (Toàn Tạ Văn) February 3, 2019, 7:12am #1 Các anh cho em hỏi về C++ với ạ: Nếu xóa 1 phần tử trong mảng biết trước vị trí k: for(i=k; i<n; i++) { a[i]=a[i+1]; }; n--; Nếu không biết trước vị trì: cout<<"Moi nhap k: "; cin>>k; for(i=0; i<n; i++) { if(a[i]=k) { a[i]=a[i+1]; n--; } } em viết 2 code như trên kia có đúng không ạ??? ở trường hợp 2: em thử test với dãy n=5, arr= 1 2 3 2 5 và k=2 vậy là lẽ ra kết quả phải là: 1 3 5 chứ sao nó cứ ra 1 3 3 hoài ạ 1 Like tcm (Người bí ẩn) February 3, 2019, 7:12am #2 Cần gì phức tạp thế bạn, trong C++ có hỗ trợ cho việc thêm / xóa ít / nhiều phần tử của mảng, chuỗi, vector … mà str.erase(x, y); // Xóa đi y ký tự bắt đầu tại vị trí x. str.erase(str.begin() + x); // Xóa đi ký tự tại vị trí x. str.erase(str.begin() + x, str.begin() + y); // Xóa đi các ký tự từ chỉ số x đến chỉ số y - 1 str.insert(x, "y"); // Thêm chuỗi y vào vị trí x. str.insert(x, "y", z); // Thêm z ký tự từ chuỗi y vào vị trí x. Nếu z có độ dài lớn hơn độ dài chuỗi y thì tiếp tục thêm vào 1 khoảng trắng và sau đó lại bắt đầu thêm vào các ký tự của chuỗi từ vị trí 0 --> sao cho đủ z thì thôi. str.insert(x, y, 'z'); // Thêm y lần ký tự z vào vị trí x. str.insert(str.begin() + x, 'y'); // Thêm ký tự y vào vị trí x. str.insert(str.begin() + x, y, 'z'); // Thêm y lần ký tự z vào vị trí x. str.insert(str.begin() + x, str2.begin() + y, str2.begin() + z); // Thêm chuỗi ký tự con của chuỗi str2 bắt đầu từ vị trí y cho đến vị trí z - 1 vào vị trí x trong chuỗi str. int found = str.find('x'); if(found != string::npos) => trả về found chính là vị trí xuất hiện đầu tiên của ký tự x trong chuỗi str. else => Không tồn tại ký tự x trong chuỗi str. int found = str.find("x"); if(found != string::npos) => trả về found chính là vị trí xuất hiện đầu tiên của chuỗi x trong chuỗi str. else => Không tồn tại chuỗi x trong chuỗi str. int found = str.find("x", y, z); if(found != string::npos) => trả về found chính là vị trí xuất hiện đầu tiên của chuỗi x lấy ra z ký tự và sẽ bắt đầu tìm kiếm từ vị trí y trong chuỗi str. else => Không tồn tại chuỗi x trong chuỗi str. 13 Likes hoangtrung1999 (Nguyễn Hoàng Trung) October 18, 2016, 6:35am #3 i<n-1 mới đúng nhé TheSky ( Ngô Doãn Tuấn) October 18, 2016, 7:06am #4 Không nên lợi dụng, sử dụng hàm có sẵn với những bài toán như thế này! 1 Like StGhost (Thuandd) October 18, 2016, 7:21am #5 @HienVienVu code sau của bạn bị sai nhé, mỗi lần xóa 1 phần tử bạn phải dồn hết các phần tử còn lại lên rồi mới xét đến phần tử tiếp theo. Tốt nhất với bài xóa nhiều phần tử này bạn nên dùng vòng lặp ngoài là while 1 Like tcm (Người bí ẩn) October 18, 2016, 3:07pm #6 Đúng rồi, nên tập làm hàm cho riêng mình để xử lý luyện logic. Nhưng khi quen rồi thì cũng không nên viết hàm riêng mà nên dùng hàm có sẵn. Vì hàm có sẵn chạy nhanh, mấy bạn giải thuật thi olympic đều nhớ những hàm như thế này P/S: Trong C không có mấy hàm hỗ trợ như thế này nên việc xử lý mảng hơi mệt đối với những người “lười” hoặc học C++ trước đó (my personal idea) 2 Likes TheSky ( Ngô Doãn Tuấn) October 19, 2016, 3:21am #7 tcm: Vì hàm có sẵn chạy nhanh Có chắc là chạy nhanh hơn với những hàm trên không ? Khi độ phức tạp là 0(n^2) tcm (Người bí ẩn) October 19, 2016, 4:23am #8 Hàm được xây dựng sẵn bao giờ cũng nhanh hơn hàm do mình viết ra mà anh ? TheSky ( Ngô Doãn Tuấn) October 19, 2016, 5:54am #9 tcm: bao giờ cũng nhanh hơn hàm do mình viết ra Anh nghĩ em nên chắc chắn về những gì mình đang nói. Đơn giản như thuật toán xóa 1 phần tử trong arrayList của Java là một hàm dựng sẵn và độ phức tạp thuật toán của nó là O(n^2). Rõ ràng là nó sẽ lâu rất lâu so với việc sử dụng LinkList trong trường hợp xấu nhất(thường trong các kì thi olympic lớn thường sẽ đánh vào đó) update: Hàm đó, vừa được cập nhật lại một hàm mới : 0(n). Kết luận: Nếu mới học để hiểu vấn đề thì đừng khuyên họ dùng hàm có sẵn. Để nắm vấn đề rõ hơn trước Kể cả việc đi học trên trường thầy cô giáo cũng căn dặn không nên lạm dụng hàm có sẵn(Tức là bất đắc dĩ mới dùng) Hàm được viết sẵn không phải bao giờ cũng tốt? Nếu tốt rồi thì việc gì học phải liên tục update sửa đổi. Không biết mọi người thế nào nhưng tự mình viết ra cái hàm rồi dùng để xử lý bài toán của mình cũng thú vị mà 4 Likes tcm (Người bí ẩn) October 19, 2016, 6:16am #10 Thanks anh ^^ Giờ mới thông não ra 1 Like thien926852000 (nguyen ngoc thien) February 3, 2019, 6:13am #11 bạn có thể cho mik xin tài liệu c++ ko ạ…tài liệu có mấy câu lệnh gọn như thế này ạ noname00 (HK boy) split this topic May 13, 2021, 6:38pm #12 A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3 rogp10 (rogp10) May 7, 2021, 9:48am #13 Nếu xóa nhiều vị trí thì bạn lưu số phần tử đã xóa (gọi là d), sau đó thì a[i-d] = a[i]. 2 Likes 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 » Xóa Chuỗi Trong Chuỗi C++ Xóa Ký Tự Trong String C++ Xóa Chuỗi Trong C++ [Update] String Trong C++ | Hàm Erase Trong C++ - Xác Minh 4.3.19 Xóa String (Erasing) - CppDeveloper Tìm Và Xóa Chuỗi Con, Dùng Class String Trong C++ - YouTube Hàm Xóa Xâu(erase) - Hàm Tạo Và Các Toán Tử Top 13 Hàm Xóa Chuỗi Trong C Xóa 1 Ký Tự Tùy ý Trong Chuỗi???? - Cộng đồng C Việt Thắc Mắc Xóa 1 Phần Tử Và Xóa Nhiều Phần Tử Trong C++ Xâu Trong C++ - VNOI Làm Cách Nào để Loại Bỏ Tất Cả Các Ký Tự Không Chữ Và Số Từ Một ... C++ Code - 98 Lines - Codepad Chuỗi Ký Tự C++ | đi- - Năm 2022, 2023