30/09/2018, 17:32

Kiểm tra array empty khi được truyền vào hàm?

Mọi người cho em hỏi , em muốn kiểm tra một array có empty hay không ? Em thử đi tìm Length của nó , em đã search trên mạng có rất là nhiều cách ví dụ :

Ngoài ra còn có những cách khác sử dụng template ! Nhưng các cách này khi áp dụng với một array truyền vào một hàm thì nó sẽ không hoạt động ?
Ví dụ em có hàm getLenghth( int a[] )

Thì kết quả sẽ ra sai ! Mấy anh (chị ) nào có cách làm nào chỉ em với ? Tính length của Array khi được truyền vào hàm thôi nha ! Không phải để trong main giống ví dụ 1 của em đâu !

Gió viết 19:39 ngày 30/09/2018

Không có cách nào đâu.

Cái trên ở hàm main do a là 1 mảng có 2 pt nên có thể tính dc số phần tử có thể có.

Trong th ở hàm getLength thì khác, nó tương đương với 1 con trỏ, sizeof(a) chỉ trả về kích thước của con trỏ a thôi. Không tính được kích thước của mảng

dragon viết 19:33 ngày 30/09/2018

Vậy có cách nào kiểm tra được mảng đó rỗng không bạn ?

dragon viết 19:47 ngày 30/09/2018

Mình có một cách để kiểm tra array có rỗng không ? đó là mình xét phần tử đầu của mảng *a (a[0]) đối với visual studio thì vị trí trong mảng không có giá trị sẽ được lưu là số âm (-872223) chẳng han !
Mình xét if(a[0] <0) return array is empty ? Nhưng mình nghĩ cách làm này không hiểu quả được :3 vì sơ một số IDE khác sẽ ra kết quả khác

dragon viết 19:36 ngày 30/09/2018

Cách giải quyết

  • Tạo một maxsize cho array :ví dụ #define maxsize 100
  • Set tất cả phần tử của mảng về một giá trị nào đó ví dụ như 0,-1… từ phần tử thứ 0 ->maxsize - 1 của array đó. Trong c++ nếu khai báo: int array[maxsize]; thì mặc định các phần tử của array có giá trị là 0.
  • Nếu muốn kiểm tra empty hay không ? thì xem xét giá trị tại đó có khác với giá trị của mình đã set hay không? nếu khác có nghĩa mảng có phần tử ,ngược lại thì không có.
    Ví dụ như mảng đã được thiết lặp về 0 Hàm dưới đây dùng để kiểm tra !
Bài liên quan
0