Xóa Các Phần Tử Trùng Nhau Trong Mảng

      30
ai giải thích giùm mình đoạn code nay với for(i=0;i for(j=i+1;j { if(a==a) { a=a; n--; i--; } }Mình không hiểu chỗ i--. Thanks m.n:3

Bạn đang xem: Xóa các phần tử trùng nhau trong mảng

Quote
*

*
hostingvietnam.vn
Cooment dòng ấy, (bằng cách gõ //). Chạy thử một vài mảng khoảng 20, 30 phần tử thì sẽ nghiệm ra mục đích của nó.
Quote
*

ai giải thích giùm mình đoạn code nay với for(i=0;i for(j=i+1;j { if(a==a) { a=a; n--; i--; } }Mình không hiểu chỗ i--. Thanks m.n:3
khi xóa 1 phần tử trong mảng thì thật chất là ghi đè, mà khi ghi đè mà ko giảm số phần tử mảng và chỉ số mảng đi thì trong 1 vài trường hợp cần xuất ra vị trí phần tử hoặc số phần tử của mảng sau khi xóa sẽ ko chính xác, cụ thể ở đây, n-- giảm bớt số phần tử mảng đi 1 đơn vị, i-- giảm chỉ số của phần tử đi 1 vị trí. Lâu rồi ko nhớ, có gì sai xót mong anh em đừng trách!
khi xóa 1 phần tử trong mảng thì thật chất là ghi đè, mà khi ghi đè mà ko giảm số phần tử mảng và chỉ số mảng đi thì trong 1 vài trường hợp cần xuất ra vị trí phần tử hoặc số phần tử của mảng sau khi xóa sẽ ko chính xác, cụ thể ở đây, n-- giảm bớt số phần tử mảng đi 1 đơn vị, i-- giảm chỉ số của phần tử đi 1 vị trí. Lâu rồi ko nhớ, có gì sai xót mong anh em đừng trách!

Xem thêm: Online Friday Là Gì Với Black Friday, Online Friday Là Gì

Không nhớ thì trả lời chi.Code này đoán mò không được. Đã bảo phải chạy thử mới biết mà!Gợi ý: thường thường tôi trả lời không có quote lại code của người hỏi. Một khi tôi quote lại là do tôi sợ người hỏi sửa bài. Nói trắng ra, code trên có vấn đề.
ai giải thích giùm mình đoạn code nay với for(i=0;i for(j=i+1;j { if(a==a) { a=a; n--; i--; } }Mình không hiểu chỗ i--. Thanks m.n:3
Đầu tiên vòng lặp i chạy từ đầu mảng đến phần tử thứ n-1, vòng lặp j chạy từ i+1 nếu phần tử nằm ở vị trí a == a (tức là trùng nhau) thì cho phần tử ở vị trí a = với phần tử vị trí a, vì trừ đi một phần tử bị trùng nên n và i sẽ hạ xuống một đơn vị. Đơn giản thế thôi
Đầu tiên vòng lặp i chạy từ đầu mảng đến phần tử thứ n-1, vòng lặp j chạy từ i+1 nếu phần tử nằm ở vị trí a == a (tức là trùng nhau) thì cho phần tử ở vị trí a = với phần tử vị trí a, vì trừ đi một phần tử bị trùng nên n và i sẽ hạ xuống một đơn vị. Đơn giản thế thôi
Đơn giản cái khỉ mốc. Đã bảo code sai, hổng chịu chạy thử mà cứ ở đấy đoán mò.Lỗi hiển nhiên nhất:Nếu phần tử đầu tiên (chỉ số 0) có trị trùng ở vị trí k; khi j chạy đến k, i-- = -1, chương trình sẽ bể ổ.Còn nhiều lỗi nữa, kể hông hết!
Code bad hay bọt gì đó là vấn đề chủ quan.Code đúng hay sai là khách quan. Sai thì chỉ cần đưa ra trường hợp kết quả sai, chả cần lập luận gì cả.
Sẵn tiện đây mình mượn topic để hỏi luôn tại vì mình cũng bí chỗ xóa phần tử nhưng là mảng 2 chiều cấp phát động. Cụ thể code mình ntn:

# include# include# include# includeusing namespace std;class Matrix{private:int **mang, columnNum, rowNum;public: void nhapMatrix(){cout>rowNum;cout>columnNum;mang= new int*;for(int i=0;i>mang;}}}void xuatMatrix(){cout
Mấy bạn để ý dùm method xoaPhanTuTrung(***x) cụ thể mình nghĩ mãi ko ra nên truyền biến ntn vào method này? method mình viết sai rõ ràng, mình biết là phải truyền vào một cái Matrix nhưng nếu như vậy thì Matrix ở đây ko phải là 1 mảng 2 chiều nên ko thể ghi a được nó sẽ báo lỗi. Các bạn ai biết chỉ dùm mình chi tiết chỗ này với, nguyên đêm qua thức đến giờ luôn mà nghĩ mãi ko ra. Chân thành cảm ơn sự giúp đỡ của các bạn! Mod làm ơn đừng xóa bài này nha, vì nếu mình viết ra 1 topic riêng thì chắc chắn có người sẽ nói nội dung giống hệt topic này thì tạo cái mới làm gì?