2
Nhập mảng không biết trước số lượng phần tử trong C/C++?
2
Việt Cuponi70 đã đăng:

thêm bình luận...
3
NOTHING50 đã đăng:

Trong C, ý tưởng khá đơn giản, bạn có thể dùng hàm malloc để khởi tạo một mảng bất kỳ, sử dụng vòng lặp while và định nghĩa một điều kiện dừng nào đó bạn muốn, ví dụ như nhập vào giá trị -1 thì chương trình dừng lại. Ở mỗi vòng lặp, tức là mỗi lần thêm phần tử vào mảng, bạn sử dụng hàm realloc để cấp phát lại bộ nhớ cho mảng, mà cụ thể hơn là mở rộng vùng nhớ của mảng ra để chứa phần tử mới.

#include <stdio.h>
#include <stdlib.h>

#define STOP -1

int main() {
    int *A = (int *)malloc(sizeof(int));
    A[0] = NULL;
    int new_n = 1;
    int n;

    while (true) {
        printf("Them phan tu moi vao mang (nhap -1 de ket thuc): ");
        scanf_s("%d", &n);
        if (n == STOP)
            break;

        if (A[0] == NULL)
            A[0] = n;

        else {
            int *B = (int *)realloc(A, sizeof(int)*(new_n + 1));

            if (B == NULL){
                printf("Khong du bo nho de cap phat.\n");
                return -1;
            }

            B[new_n] = n;
            new_n++;
            A = B;
        }
    }

    printf("Mang sau khi da nhap la:\n");
    for (int i = 0; i < new_n; i++)
        printf("%5d", A[i]);

    free(A);
}

Trong C++, không có hàm realloc như trong C bởi vì ý định của người tạo ra C++ là như vậy, thay vào đó, nếu bạn muốn sử dụng mảng mà không cần biết trước số lượng phần tử trong C++ thì bạn nên sử dụng thư viện std::vector và phương thức insert hoặc push_back tương ứng của nó.

đã bổ sung 5.4 năm trước bởi
Avatar: NOTHING NOTHING50
thêm bình luận...
0
Cộng đồng đã đăng:

Bạn có thể tham khảo các cách nhập mảng trong C++ tại link tham khảo sau: Nhập xuất mảng trong C++

thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)