sách gpt4 ai đã đi

C - 检测到堆栈粉碎

In lại 作者:太空宇宙 更新时间:2023-11-04 05:18:04 25 4
mua khóa gpt4 Nike

我需要对矩阵 A 实现一个非常简单的就地 LU 分解。我正在使用高斯消元法,我想用 3x3 矩阵对其进行测试。问题是,我一直收到 stack smashing 错误,我不知道为什么。我在我的代码中没有看到任何问题,它可以做到这一点。你有什么想法吗?

问题可能出在 Factorization block 中。


###My code:###
#include

int chính() {
int n = 3; // matrix size

int A[3][3] = {
{1, 4, 7},
{2, 5, 8},
{3, 6, 10}
};

printf("Matrix A:\n");

for( int i=0; i < n; i++ ) {
for( int j=0; j < n; j++ ) {
printf("%d ", A[i][j]);

if ( j % 2 == 0 && j != 0 ) {
printf("\n");
}
}
}

// FACTORIZATION
int k;
int rows;
for( k = 0; k < n; k++ ) {
rows = k + k+1;
A[rows][k] = A[rows][k]/A[k][k];
A[rows][rows] = A[rows][rows] - A[rows][k] * A[k][rows];
printf("k: %d\n", k);
}

printf("Matrix after decomp:\n");
for( int i=0; i < n; i++ ) {
for( int j=0; j < n; j++ ) {
printf("%d ", A[i][j]);

if ( j % 3 == 0 && j != 0 ) {
printf("\n");
}
}
}

trả về 0;
}

1 Câu trả lời

您的错误很可能在这里:

rows = k + k+1;
A[rows][k] = A[rows][k]/A[k][k];
A[rows][rows] = A[rows][rows] - A[rows][k] * A[k][rows];

这意味着 rows 遍历值 1、3、5;然后用于访问只有三个元素的数组。这确实会溢出,因为其中唯一有效的偏移量是 1。

biên tập:查看您的 Matlab 代码,它正在做一些完全不同的事情,因为 rows = k + 1:n Sẽ rows 设置为一个小 vector ,然后使用它拼接矩阵,C 不支持作为原语的东西。您需要使用显式循环重新实现它和矩阵乘法 A(rows, k) * A(k, rows).

关于C - 检测到堆栈粉碎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182167/

25 4 0
Bài viết được đề xuất: Xử lý con trỏ C (cơ bản)
Bài viết được đề xuất: css - 歌剧不支持仅图像上的边界半径
Bài viết được đề xuất: css - 为什么我的框不显示在右边?
Bài viết được đề xuất: C - 用 if 语句重写 for 循环中的 while 循环
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com