01/10/2018, 09:07

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 . Em mong được các ace trong group chỉ ra lỗi sai và giải thích giúp e ạ?

Tao Không Ngu. viết 11:22 ngày 01/10/2018

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ề.

Nguyen Gia Huy viết 11:21 ngày 01/10/2018
#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;

}
Henry viết 11:23 ngày 01/10/2018

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

Luong Nguyen Hung Minh viết 11:10 ngày 01/10/2018

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

Luong Nguyen Hung Minh viết 11:09 ngày 01/10/2018

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

Luong Nguyen Hung Minh viết 11:19 ngày 01/10/2018

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

Bài liên quan
0