运行时错误:使用c++的矩阵行列式



我正在写一个程序,可以计算用户输入的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]位置的元素。所以,如果有人能帮我解决这个错误,我将非常感谢你。

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循环

数组从索引0开始。数组的大小应该是[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;
}

最新更新