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 ạ?
Code xoá phần tử trùng nhau trong mảng bị sai
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?