cuốn sách gpt4 ai đã làm

Tham nhũng nặng nề khi nhận được ma trận nxn bị phân hủy LU

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 03:39:24 27 4
mua khóa gpt4 Nike

Tôi đang cố gắng phân tích hệ số LU của ma trận nxn (lấy n từ scanf) Khi tôi cố gắng tạo một ma trận nxn và đặt các số vào:/ Tôi không biết sửa nó ở đâu vì tôi đang sử dụng malloc cho lần đầu tiên

#include  

#include

Cảnh báo #pragma(tắt:4996)

//void gauss(ma trận);

int main(void)

{

int tôi, n;

int x, y;

int **ma trận; //xác định ma trận[x][y]

int **L;

int **U;

printf("nxn loại ma trận n.\n");

scanf("%d", &x);

y = x, n = x;

ma trận = (int **)malloc(sizeof(int *) * x); // int* số x cấu trúc chính
vì (i = 0; i
{
ma trận[i] = (int *)malloc(sizeof(int) * y);
} //xây dựng cấu trúc ma trận[x][y(size of x)]

L = (int **)malloc(sizeof(int *) * x); // int* số x cấu trúc chính
vì (i = 0; i
{
L[i] = (int *)malloc(sizeof(int) * y);
} //xây dựng cấu trúc L[x][y(size of x)]

U = (int **)malloc(sizeof(int *) * x); // int* số x cấu trúc chính
vì (i = 0; i
{
U[i] = (int *)malloc(sizeof(int) * y);
} //xây dựng cấu trúc U[x][y(size of x)]

printf("nhập số ma trận \n");
với (x = 0; x < n; x++){
với (y = 0; y < n; y++){
printf("dòng %dx%d số : ", x + 1, y + 1);
scanf("%lf", &matrix[x][y]);
}
}




vì (i = 0; i
{
miễn phí(ma trận[i]);
}
miễn phí(ma trận);//ma trận tự do

vì (i = 0; i
{
miễn phí(L[i]);
}
miễn phí(L);//miễn phí L

vì (i = 0; i
{
miễn phí(U[i]);
}
miễn phí(U);//miễn phí U

return 0;

}

câu trả lời hay nhất

khi tôi sử dụng gcc main.c -o main -Wall Khi biên dịch mã của bạn, một cảnh báo sẽ được in:

main.c:51:9: chú ý : định dạng '%lf' mong đợi đối số thuộc loại 'double *', nhưng đối số 2 có loại 'int *' [-Wformat]

Tôi có thể tái tạo lại vùng heap bị hỏng bằng cách sử dụng kích thước 6.

Cách chính xác để yêu cầu một số nguyên vì ma trận Đúng int** kiểu:

scanf("%d", &matrix[x][y]);

Sau khi điều này được khắc phục, vấn đề tham nhũng vùng heap dường như đã được giải quyết. Đây là mã kết quả. Xin lưu ý rằng đã kiểm tra malloc() giá trị trả về của , và x Không còn được sử dụng làm kích thước của ma trận. vượt quagcc main.c -o chính

biên soạn
#include  

#include


//void gauss(ma trận);

int main(void)

{

int tôi, n;

int x, y;

int **ma trận; //xác định ma trận[x][y]

int **L;

int **U;

printf("nxn loại ma trận n.\n");

scanf("%d", &n);

//y = x, n = x;

ma trận = malloc(sizeof(int *) * n); // int* số x cấu trúc chính
if(matrix==NULL){printf("malloc failed\n");exit(1);}
vì (i = 0; i
{
ma trận[i] = malloc(sizeof(int) * n);
if(matrix[i]==NULL){printf("malloc failed\n");exit(1);}
} //xây dựng cấu trúc ma trận[x][y(size of x)]

L = malloc(sizeof(int *) * n); // int* số x cấu trúc chính
if(L==NULL){printf("malloc failed\n");exit(1);}
vì (i = 0; i
{
L[i] = malloc(sizeof(int) * n);
if(L[i]==NULL){printf("malloc failed\n");exit(1);}
} //xây dựng cấu trúc L[x][y(size of x)]

U = malloc(sizeof(int *) * n); // int* số x cấu trúc chính
if(U==NULL){printf("malloc failed\n");exit(1);}
vì (i = 0; i
{
U[i] = malloc(sizeof(int) * n);
if(U[i]==NULL){printf("malloc failed\n");exit(1);}

} //xây dựng cấu trúc U[x][y(size of x)]

printf("nhập số ma trận \n");
với (x = 0; x < n; x++){
với (y = 0; y < n; y++){
printf("dòng %dx%d số : ", x + 1, y + 1);
scanf("%d", &matrix[x][y]);
}
}




vì (i = 0; i
{
miễn phí(ma trận[i]);
}
miễn phí(ma trận);//ma trận tự do

vì (i = 0; i
{
miễn phí(L[i]);
}
miễn phí(L);//miễn phí L

vì (i = 0; i
{
miễn phí(U[i]);
}
miễn phí(U);//miễn phí U

return 0;

}

希望对您有所帮助!

EDIT: Đây là liên kết đến một câu hỏi thú vị cấp phát bộ nhớ của mảng 2D .yours là chính xác, cho phép thay đổi độ dài của mỗi dòng một cách độc lập. Một tùy chọn khác là phân bổ tất cả các giá trị cùng một lúc và có các giá trị liền kề nhau trong bộ nhớ. Điều này là bắt buộc đối với các thư viện như lapack của fftw.

Về vấn đề c - heap tham nhũng khi lấy ma trận nxn được phân tích nhân tố LU, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/29878959/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress