C++ 中的嵌套循环和矩阵
Nested loops and matrices in C++
我一直在尝试编写一个 C++ 程序来执行 2 个矩阵的加法,这是代码
我已经写了。但是我一直有错误说 "Process returned -1073741819 (0xC0000005)" 你能帮我找到我的错误吗?
int main()
{
float a[3][3],b[3][3],c[3][3];
int l,k;
cout<<"tell me the nr of lines in the vectors"<<endl;
cin>>l;
cout<<"tell me the nr of columns in the vectors"<<endl;
cin>>k;
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<"A["<<i<<"]"<<"["<<j<<"]= ";
cin>>a[i][j];
}
}
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<"B["<<i<<"]"<<"["<<j<<"]= ";
cin>>b[i][j];
}
}
for(int i=1; i<=l;i++){
for(int j=1;j<=k;i++){
c[i][j]=a[i][j]+b[i][j];
}
}
cout<<"the sum of matrices A & B is;"<<endl;
/* i have also added this code here instead of the following loop just to see if there was a problem with the addition procedure or displayin the results;
cout<<c[i][j]; */
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<c[i][j];
}
}
return 0;
}
在您的求和逻辑中,嵌套的迭代器变量 j
没有递增,它是 i
。
看起来像:
for(int i=1; i<=l;i++){
for(int j=1;j<=k;i++){ /*Change i to j*/
c[i][j]=a[i][j]+b[i][j];
}
}
所以,它看起来像:
for(int i=1; i<=l;i++){
for(int j=1;j<=k;j++){
c[i][j]=a[i][j]+b[i][j];
}
}
整个代码变为:
#include <iostream>
using namespace std;
int main()
{
float a[3][3], b[3][3], c[3][3];
int l, k;
cout << "tell me the nr of lines in the vectors" << endl;
cin >> l;
cout << "tell me the nr of columns in the vectors" << endl;
cin >> k;
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << "A[" << i << "]"
<< "[" << j << "]= ";
cin >> a[i][j];
}
}
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << "B[" << i << "]"
<< "[" << j << "]= ";
cin >> b[i][j];
}
}
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
c[i][j] = a[i][j] + b[i][j];
}
}
cout << "the sum of matrices A & B is;" << endl;
/* i have also added this code here instead of the following loop just to see if there was a problem with the addition procedure or displayin the results;
cout<<c[i][j]; */
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << c[i][j];
}
}
return 0;
}
最终输出:
tell me the nr of lines in the vectors
2
tell me the nr of columns in the vectors
3
A[1][1]= 1
A[1][2]= 2
A[1][3]= 3
A[2][1]= 4
A[2][2]= 5
A[2][3]= 6
B[1][1]= 1
B[1][2]= 2
B[1][3]= 3
B[2][1]= 4
B[2][2]= 5
B[2][3]= 6
the sum of matrices A & B is;
24681012
Process finished with exit code 0
PS:索引不从1开始,从0开始
我一直在尝试编写一个 C++ 程序来执行 2 个矩阵的加法,这是代码 我已经写了。但是我一直有错误说 "Process returned -1073741819 (0xC0000005)" 你能帮我找到我的错误吗?
int main()
{
float a[3][3],b[3][3],c[3][3];
int l,k;
cout<<"tell me the nr of lines in the vectors"<<endl;
cin>>l;
cout<<"tell me the nr of columns in the vectors"<<endl;
cin>>k;
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<"A["<<i<<"]"<<"["<<j<<"]= ";
cin>>a[i][j];
}
}
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<"B["<<i<<"]"<<"["<<j<<"]= ";
cin>>b[i][j];
}
}
for(int i=1; i<=l;i++){
for(int j=1;j<=k;i++){
c[i][j]=a[i][j]+b[i][j];
}
}
cout<<"the sum of matrices A & B is;"<<endl;
/* i have also added this code here instead of the following loop just to see if there was a problem with the addition procedure or displayin the results;
cout<<c[i][j]; */
for(int i=1;i<=l;i++){
for(int j=1;j<=k;j++){
cout<<c[i][j];
}
}
return 0;
}
在您的求和逻辑中,嵌套的迭代器变量 j
没有递增,它是 i
。
看起来像:
for(int i=1; i<=l;i++){
for(int j=1;j<=k;i++){ /*Change i to j*/
c[i][j]=a[i][j]+b[i][j];
}
}
所以,它看起来像:
for(int i=1; i<=l;i++){
for(int j=1;j<=k;j++){
c[i][j]=a[i][j]+b[i][j];
}
}
整个代码变为:
#include <iostream>
using namespace std;
int main()
{
float a[3][3], b[3][3], c[3][3];
int l, k;
cout << "tell me the nr of lines in the vectors" << endl;
cin >> l;
cout << "tell me the nr of columns in the vectors" << endl;
cin >> k;
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << "A[" << i << "]"
<< "[" << j << "]= ";
cin >> a[i][j];
}
}
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << "B[" << i << "]"
<< "[" << j << "]= ";
cin >> b[i][j];
}
}
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
c[i][j] = a[i][j] + b[i][j];
}
}
cout << "the sum of matrices A & B is;" << endl;
/* i have also added this code here instead of the following loop just to see if there was a problem with the addition procedure or displayin the results;
cout<<c[i][j]; */
for (int i = 0; i < l; i++)
{
for (int j = 0; j < k; j++)
{
cout << c[i][j];
}
}
return 0;
}
最终输出:
tell me the nr of lines in the vectors
2
tell me the nr of columns in the vectors
3
A[1][1]= 1
A[1][2]= 2
A[1][3]= 3
A[2][1]= 4
A[2][2]= 5
A[2][3]= 6
B[1][1]= 1
B[1][2]= 2
B[1][3]= 3
B[2][1]= 4
B[2][2]= 5
B[2][3]= 6
the sum of matrices A & B is;
24681012
Process finished with exit code 0