【问题标题】:Run time error: Determinant of matrix using c++ [closed]运行时错误:使用 C++ 的矩阵行列式 [关闭]
【发布时间】:2021-12-31 07:04:58
【问题描述】:

我正在尝试编写一个程序来计算用户输入的 2x2 矩阵的行列式。 我的代码如下-

 //Program to calculate determinant of matrices

#include<iostream>
#include<conio.h>
using namespace std;

int main()
{
    int arr[1][1];
    int i,j,p,q,v,b,c,k,determinant;
    
    for(i=1;i<=2;i++)
    {
    for(j=1;j<=2;j++)
    {
    p=i;
    q=j;    
    cout<<"Enter element :- ";
    cin>>arr[p][q];
    cout<<"You are in "<<i<<j<<endl;
    }
    }
    v=arr[1][1];
    b=arr[1][2];
    c=arr[2][1];
    k=arr[2][2];
    cout<<"Entered elements are = "<<v<<" "<<b<<" "<<" "<<c<<" "<<k<<endl;
    determinant= ((v*k)-(c*b)); 
    cout<<"Determinant of given matrix is = "<<determinant; 
    getch();
}

这就是我在使用这个程序时遇到的错误 -

Enter element :- 4
You are in 11
Enter element :- 9
You are in 12
Enter element :- 8
You are in 21
Enter element :- 7
You are in 22
Entered elements are = 4 8  8 7
Determinant of given matrix is = -36

在位置 arr[1][2] 我输入了“9”作为元素,但它打印的是分配给位置 arr[2][1] 的元素。 所以,如果有人能帮我解决这个错误,我将非常感谢你。

【问题讨论】:

    标签: c++ runtime-error determinants


    【解决方案1】:

    int arr[1][1] 没有声明两个元素的矩阵,它声明了一个 1x1 矩阵。

    改为声明为

    int arr[2][2];
    

    话虽如此,C++ 中的索引从 0 开始

    v=arr[1][1];
    b=arr[1][2];
    c=arr[2][1];
    k=arr[2][2];
    

    应该是

    v=arr[0][0];
    b=arr[0][1];
    c=arr[1][0];
    k=arr[1][1];
    

    for 循环也是如此

    【讨论】:

    • 值得用 C(和 C++)解释,所有数组都使用从零开始的索引。对于n 元素数组的含义,有效索引为0 &lt;= index &lt; n。 (编辑涵盖了它——干得好)
    • 感谢您花时间解决我的问题 :-)
    【解决方案2】:

    数组从索引 0 开始。数组的大小应该是 a[2][2],因为它是一个 2x2 矩阵。 相应地修改数组元素的循环。

    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        int arr[2][2];
        int i,j,p,q,v,b,c,k,determinant;
        
        for(i=0;i<=1;i++)
        {
        for(j=0;j<=1;j++)
        {
        p=i;
        q=j;    
        cout<<"Enter element :- ";
        cin>>arr[p][q];
        cout<<"You are in "<<i+1<<j+1<<endl;
        }
        }
        v=arr[0][0];
        b=arr[0][1];
        c=arr[1][0];
        k=arr[1][1];
        cout<<"Entered elements are = "<<v<<" "<<b<<" "<<" "<<c<<" "<<k<<endl;
        determinant= ((v*k)-(c*b)); 
        cout<<"Determinant of given matrix is = "<<determinant;
    }
    
    

    【讨论】:

    • 感谢您花时间解决我的问题 :-)
    • 请接受答案并投赞成票,因为它有帮助!这就是stackoverflow的工作原理:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 2014-11-14
    • 2016-10-26
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多