Code xoá phần tử trùng nhau trong mảng bị sai

http://cpp.sh/7qjdm
Đây là code của em về tìm số trùng nhau trong mảng và xuất ra dãy rút gọn . Khi đã xóa bớt đi những phần tử giống nhau, thì nó lại gán phần tử cuối mảng vào 2 ô còn lại :frowning:. Em mong được các ace trong group chỉ ra lỗi sai và giải thích giúp e ạ?

Hi Luong Nguyen Hung Minh.
Phần xóa phần tử bạn làm chưa đúng. Bạn đảo phần tử cuối vào chứ không phải đảo phần tử liền kề.

#include <iostream>
using namespace std;

int main() {
	int arr[] = { 4,6,2,2,1,6,9 };
	int n = sizeof(arr) / sizeof(int);

for (int i = 0; i <n-1; i++) {
	for (int j = i + 1; j < n; j++) {
		if (arr[i] == arr[j]) {
			arr[j] = arr[j + 1];
			n--;
		}
	}
}

for (int i = 0; i < 7; i++) {
	cout << arr[i] << " ";
}

return 0;

}
Lỗi đây bạn

    for (int i = 0; i < n; i++) {
    		cout << arr[i] << " ";
    	}

code bạn còn sai vd input int arr[] = { 4,6,2,2,1,6,9,9,10,10 };
sửa lại

#include <iostream>
using namespace std;

int main() {
	int arr[] = { 4,6,2,2,1,6,9,9,10,10 };
	int n = sizeof(arr) / sizeof(int);

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (arr[i] == arr[j] && j != i) {
				arr[j] = arr[j + 1];
				n--;
			}
		}
	}

	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}

	return 0;

}

http://cpp.sh/45qpq e thử code thế này. A xem thế nào
của e là sort mảng đó trước sau đó rồi kiểm tra rồi xuất ra nếu xuất rồi, không xuất nữa

Bác còn hay hơn e vụ sort nữa,. Cám ơn rất nhiều luôn

Cám ơn a, e sẽ chỉnh lại :3

Cám ơn a, e sẽ ghi nhớ lỗi này.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?