01/10/2018, 15:54
Hỏi về code xóa phần tử trùng trong mảng 1 chiều
E xin có code
#include<iostream>
using namespace std;
void Nhap_Mang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
cout << "
Nhap phan tu a[" << i << "]";
cin >> a[i];
}
}
void Xuat_Mang(int a[], int n)
{
for (int i=0; i < n; i++)
{
cout << a[i] << " ";
}
}
void Xoa(int a[], int &n, int vitrixoa)
{
for (int i = vitrixoa + 1; i < n; i++)
{
a[i - 1] = a[i];
}
n--;
}
void Xoa_Phan_Tu_Trung(int a[], int &n)
{
for (int i=0; i < n - 1;i++) // i -1;
{
for (int j = i + 1; j < n;j++)
{
if (a[i]==a[j])
{
Xoa(a,n,j);
i--;// n?u không có i-- s? x?y ra l?i gì ?
}
}
}
// 1 2 1 1 3 4 5 6 7 8 ..
}
int main()
{
int a[100];
int n;
cout << "
Nhap so luong phan tu mang";
cin >> n;
cout << "
Nhap Mang
";
Nhap_Mang(a, n);
cout << "
Xuat Mang
";
Xuat_Mang(a, n);
Xoa_Phan_Tu_Trung(a, n);
cout << "
Mang sau khi xoa phan tu trung";
Xuat_Mang(a, n);
system("pause");
return 0;
}
khi ko có i-- ; thì ta nhập mảng 1 2 1 1 3 4 5 6 … sẽ còn xót lại là 1 2 1 3 4 5 6
nhưng e ko hiểu nếu i-- 2 lần như vậy thì i= -1 vậy sao , mà chỉ số phần tử âm sao mà chạy dc
Bài liên quan