从函数返回2d动态数组(c ++)

时间:2014-04-24 19:16:17

标签: c++ arrays dynamic matrix return

首先我要告诉你我是一个新手自学者...我所知道的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数组返回主函数的方式!

程序在以下时间失败:

  1. 它执行偶数列1不等于列2的功能 (但行是相同的)并返回垃圾!
  2. 如果两个矩阵的行和列不相等,则显示     消息“两个矩阵的大小不同。无法执行     添加“,然后程序崩溃,窗口显示     错误消息“程序已停止工作”
  3. 我对此感到困惑和失望 任何帮助将不胜感激!

0 个答案:

没有答案