Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: [C] Tách mảng và trộn mảng

  1. #1
    Ngày gia nhập
    12 2006
    Bài viết
    13

    Mặc định [C] Tách mảng và trộn mảng

    Mình muốn tách 1 mảng ra làm 2 mảng : 1 mảng toàn số chẵn và 1 mảng toàn số lẻ . Ý tưởng thì mình đã nghĩ ra nhưng lúc thực hiện thì thấy có chỗ không ổn .Đó là khi khai báo mảng chỉ khai báo được hằng số thôi .Mình thì muốn tăng giảm số phần tử trong 2 mảng nhỏ để khi tách ra cho phù hợp . Không hiểu làm thế nào ? Mong chỉ giúp . THANKS

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Cách đơn giản là U có thể khai báo 3 mảng có cùng số phần tử lớn nhất của mảng chính . Còn không có thể cấp phát động , nếu U mới học về C thì tốt hơn là nên Tạo 2 mảng con có cùng số phần tử với mảng chính . Còn về cấp phát động có thể xem thêm trong tài liệu . Khai báo nó như thế này :

    void maloc(size)

    ví dụ để khai báo 1 mảng kiểu INT chứa được 20 phần tử thì tớ viết như sau :

    int *P;
    *P=maloc(20*sizeof(int));

    kidkid nhớ vậy thôi , chứ dạo này không ôn lại C nên có thể lầm lẫ hì hì

  3. #3
    Ngày gia nhập
    12 2006
    Bài viết
    13

    À mình gặp vấn đề thế này , như bạn nói thì ta khai báo các mảng con có số phần tử trùng mảng lớn luôn .Nhưng ví dụ ta đã tách ra 2 mảng rồi lúc mà printf ra thì kết quả ko như ý muốn . VD khai báo số phần tử của mảng là 6 ,mảng ban đầu là 1 2 3 4 5 6 . sau khi tách ta có 2 mảng con 1 3 5 và 2 4 6 nhưng khi in ra thì mình thấy 2 mảng con ấy lại thành 1 3 5 6 6 6 và 2 4 6 6 6 6 tức là hình như mình khai báo ban đầu là mấy phần tử thì nó in ra đủ cả nếu ko có thì nó cho bừa hay sao ấy . Có cách nào khắc phục không ?

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Bạn phải có 1 biến xác định chiều dài mảng thì mới làm được chứ.

  5. #5
    Ngày gia nhập
    12 2006
    Bài viết
    13

    ủa tui tưởng chiều dài mảng phai là 1 hằng số chứ . phải ko you ?

  6. #6
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Mặc định [C] Tách mảng và trộn mảng

    Trích dẫn Nguyên bản được gửi bởi grubkhukho Xem bài viết
    ủa tui tưởng chiều dài mảng phai là 1 hằng số chứ . phải ko you ?
    Chiều dài thực tế mà nó dùng đến cơ.

  7. #7
    Ngày gia nhập
    12 2006
    Bài viết
    13

    Vậy thì mình chưa có học phần này . Khai báo làm sao bạn ví dụ giùm mình được không ?

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Cũng không cần phải mệt thế đâu U làm vậy nè :

    int A[20],chan[20],le[20]

    nhapmang()
    tachmang()
    inmang()

    Trong tách mảng thì dùng biến I để lưu số phần tử của mảng chẵn , còn số phần tử của mảng lẽ thì trừ ra . In ra thì phải giới hạn chạy đúng số phần tử I thôi ! ok ?

  9. #9
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Nói chung khi làm với mảng (hay cấp phát động cũng vậy) thì thông thường có một biến lưu số phần tử. Nếu không thích thì dùng list, vector,... hoặc không thích nữa thì chả cần biến gì cả mà đặt cho phần tử đầu tiên giá trị là số phần tử của mảng )

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Thường là vậy thôi ! Nếu U tách ra bằng cách tạo thêm 2 mảng con thì phải dùng 1 biến count để đếm số phần tử của nó , nếu đã hoàn thành thì U hãy làm trên 1 mảng luôn để mấy phần tử chẳn bên trái , lẻ bên phải , có một biến i để đém số phần tử chẵn rồi in ra , như vậy hay hơn !

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn