一个人的朝圣800 2021-07-09 21:42 采纳率: 75%
浏览 29
已采纳

C++调试出现奇怪错误?

求逆矩阵
调试出现下面这种提示然后屏幕出现很多奇怪的代码,不知道咋办了,希望各路UU康康,蟹蟹!
'0x007138A9 处有未经处理的异常(在 解方程.EXE 中): 0xC00000FD: Stack overflow (参数: 0x00000000, 0x00E02000)"
如下

#include <cmath>
#include <iomanip>
using namespace std;
//函数声明
int determinant(int A) { return 0; }

int main()
{
    int n;
    float a = 0.0;
    cout << "输入方阵的阶" << endl;
    cin >> n;
    float A[256][256];
    float b[256][256];
    float A_1[256][256];
    int  I[256][256];
//输入方阵
    cout << "按行输入方阵元素" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cin >> A[i][j];
    }
//计算行列式
    a = determinant(A[256][256]);
//计算转置
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < n; j++)
            b[i][j] = A[j][i];
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            A_1[i][j] = b[i][j] / a;
    }
//输出A的逆矩阵
    cout << "A的逆矩阵为:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cout<<A_1[i][j];
        cout << "\n";
    }
//检验
    cout << "AA_1=\n";
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            I[i][j] =(int)A[i][j]*A_1[i][j];
        }
    }
//输出A与A_1的乘积
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cout << I[i][j];
        cout << "\n";
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 浪客 2021-07-09 22:07
    关注

    Stack overflow 堆栈溢出了,可以使用动态数组。

    #include <cmath>
    #include <iomanip>
    #include <iostream>
    using namespace std;
    //函数声明
    int determinant(int A) { return 0; }
    
    template <typename T>
    void init(T **a, int n)//生成二维数组
    {
        for (int i = 0; i < n; i++)
        {
            a[i] = new T[n];
        }
    }
    int main()
    {
        int n;
        float a = 0.0;
        cout << "输入方阵的阶" << endl;
        cin >> n;
        float **A = new float *[n]; //A[256][256];
        init(A, n);
        float **b = new float *[n]; //b[256][256];
        init(b, n);
        float **A_1 = new float *[n]; //A_1[256][256];
        init(A_1, n);
        int **I = new int *[n]; //I[256][256];
        init(I, n);
        //输入方阵
        cout << "按行输入方阵元素" << endl;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                cin >> A[i][j];
        }
        //计算行列式
        a = 1; //a = determinant(A[256][256]); 函数返回0,a在后面当做除数导致数据错误。
        //计算转置
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                b[i][j] = A[j][i];
        }
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                A_1[i][j] = b[i][j] / a;
        }
        //输出A的逆矩阵
        cout << "A的逆矩阵为:" << endl;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                cout << A_1[i][j] << " ";
            cout << endl;
        }
        //检验
        cout << "AA_1=" << endl;
        ;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                I[i][j] = (int)(A[i][j] * A_1[i][j]); //I[i][j] = (int)A[i][j] * A_1[i][j];
            }
        }
        //输出A与A_1的乘积
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                cout << I[i][j] << " ";
            cout << endl;
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月9日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出