我正在写一个程序,可以计算用户输入的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;
}