01/10/2018, 12:06
OOP C++: Giúp em vài vấn đề với
Đề bài như sau: Xóa phần tử trùng trong mảng
Nhưng em code đến đoạn này thì không biết return kết quả sao cho đúng tại vì nếu return a[m_length] thì nó không cho can thiệp vào thuộc tính của Class nên bị lỗi. Giúp e xuất ra kq sau khi xóa với ạ !
CIntArray CIntArray::Remove()
{
int m=m_Length;
for(int i=0;i<m_Length;i++)
{
for(int j=i+1;j<m_Length;i++)
{
if(a[i]==a[j])
{
XoaPhanTu(a,m,j);
}
j--;
}
}
}
void CIntArray :: XoaPhanTu(int a[],int &n, int ViTriXoa)
{
for(int i=ViTriXoa;i<n;i++)
{
a[i]=a[i+1];
}
n--;
}
Bài liên quan
Bạn dùng class rồi thì sao cần phải cho tham biến là phần tử của class làm gì, ở hàm XoaPhanTu chỉ cần 2 biến là được rồi, lúc gọi m_ thì gọi bình thường thôi, đặt public thì có thể gọi ở mọi nơi
Dùng method chaining nhưng không trả về this thì dùng làm gì @@
Sửa vậy đúng chưa ạ ? Tại e mới học về OOP nên hơi yếu ! Sau dòng XoaPhanTu(a,i) muốn trả kq về thì sao ạ,
Biến
a
ở đây bạn lấy ở đâu?Đề bài như thế nào, class này quản lí array bất kì hay là quản lí 1 array duy nhất của nó?
Code header của class ấy đâu?
Đề bài là Xóa các phần tử trùng trong mảng ạ
Hàm này bạn chỉ cần 1 tham biến là
int ViTriXoa
là được rồi.[quote=“Dinh_Dang_Khoa, post:6, topic:56683”]for(int i=0;i<m_Length;i++)
{
if(a[i]==a[i+1])
{XoaPhanTu(a,i);
[/quote]
Hàm này dùng 2 vòng for để duyệt mảng rồi tìm, sau đó xóa vị trí i là được
vậy ở CIntArray CIntArray::Remove() thì return gì ạ ?
Hàm đấy void là được rồi, chỉ là hàm thực hiện xóa các đối tượng trùng nhau trong mảng thôi mà, mảng của bạn là
CIntArray.a
, đâu cần để ý làm gì, cần thiết thì dùng bool để kiểm tra nếu xóa false hay true (Cái này tùy tư duy người code)Done. Cảm ơn sư huynh !! Mới vào môn OOP nên hơi bị ngáo tí ạ