首先我要告诉你我是一个新手自学者...我所知道的c ++来自网站,书籍和视频 一个问题需要我使用2d动态数组制作矩阵计算器 实际上我对指针X非常困惑(...我只是讨厌它我无法完全理解它的逻辑...... 我写了一个很长的代码与许多动态的2D阵列..仍然让我感到困惑! 该程序应该执行添加并评估每个矩阵的行列式。 这是代码
#include <iostream>
using namespace std;
//DECLARING PROTOTYPES
int **addMat(int **matrix1, int **matrix2, int rows1, int columns1, int rows2, int columns2);
int main()
{
int **matrix1, **matrix2, rows1, columns1, rows2, columns2;
cout<<"Please enter first matrix rows and columns numbers: ";
cin>>rows1>>columns1;
cout<<"Please enter second matrix rows and columns numbers: ";
cin>>rows2>>columns2;
matrix1 = new int *[rows1];
for (int i=0; i<rows1; i++)
{
matrix1[i] = new int [columns1];
}
matrix2 = new int *[rows2];
for (int j=0; j<rows2; j++)
{
matrix2[j] = new int [columns2];
}
//LOADING MATRICES
cout<<"Please enter first matrix elements: ";
for (int r1=0; r1<rows1; r1++)
{
for (int c1=0; c1<columns1; c1++)
{
cin>>matrix1[r1][c1];
}
}
cout<<"Please enter second matrix elements: ";
for (int r2=0; r2<rows2; r2++)
{
for (int c2=0; c2<columns2; c2++)
{
cin>>matrix2[r2][c2];
}
}
int **addit;
addit = addMat(matrix1,matrix2,rows1,columns1,rows2,columns2);
if (addit!=NULL)
{
for(int i=0; i<rows1; i++)
{
for (int j=0; j<columns1; j++)
cout<<addit[i][j]<<" ";
cout<<endl;
}
}
return 0;
}
int **addMat(int **matrix1, int **matrix2, int rows1, int columns1, int rows2, int columns2)
{
if ((rows1!=rows2) && (columns1!=columns2))
{
cout<<"The Two Matrices Are Not Of The Same Size. Cannot Perform Addition\n";
return NULL;
}
else
{ int **Addthis=0;
Addthis = new int *[rows1];
for (int add=0; add<rows1; add++)
{
Addthis[add] = new int [columns1];
}
for (int i=0; i<rows1; i++)
{
for (int j=0; j<columns1; j++)
Addthis[i][j]=(matrix1[i][j])+(matrix2[i][j]);
}
return Addthis;
}
}
我知道这样效率很低......而且我还没有写出决定性部分 因为我被困在这里 更令我困惑的是我将2d数组返回主函数的方式!
程序在以下时间失败:
我对此感到困惑和失望 任何帮助将不胜感激!