0

我正在尝试编写一个函数来分配一个上三角矩阵。它应该返回一个指向分配数组的第一个元素的指针。我还需要使用动态分配来确保分配所需的确切内存量,但我不太确定如何做到这一点......任何提示或建议将不胜感激!我是 C++ 的菜鸟。无论如何,如果有帮助,这是我的代码!

#include <iostream>

using namespace std;

int main ()
{
int a[3][3],i,j;  //creating two dimensional array
int d; 
int * p;  
cout<<"Please Enter the 9 elements of matrix (with spaces): ";  
for(i=0;i<3;i++)  
   for(j=0;j<3;j++)  
        cin>>d,&a[i][j];  

cout<<"\nThe matrix is\n ";  
for(i=0;i<3;i++)
{  
   cout<<"\n";  
   for(j=0;j<3;j++)  
        cout<<d,a[i][j];  
}  

cout<<"\nSetting zero in upper triangular matrix\n";  
for(i=0;i<3;i++){  
   cout<<"\n";  
   for(j=0;j<3;j++)  
        if(j>=i)  
          cout<<d,a[i][j];  
        else  
          cout<<0;   
}   


  return 0;  
 }  
4

2 回答 2

1

As per oli's comment I think you are looking to do

cin >> d; a[i][j] = d;

vs

cin>>d,&a[i][j];

I suggest reading something like .... http://www.cplusplus.com/doc/tutorial/basic_io/

theres your first issue

dynamic allocation is done through code like new and malloc try reading...

http://www.cplusplus.com/doc/tutorial/dynamic/

as for how to store your upper matrix... I would recommend just using a normal 2d matrix chances are it will work better with most matrix libraries out there.

Good luck with your homework.

于 2012-04-03T20:26:31.610 回答
0

通常,在分配大小为 N 的上三角矩阵时,您会分配 N + N-1 ... + 1(查找整数和)元素,然后您需要创建访问机制(可能是此处的意图),以便当你想要元素 M(i,j) 你得到第 i 行第 j 列中的元素,尽管(几乎)一半的元素丢失了;或者在使用矩阵的任何矩阵操作代码中使用矩阵时手动执行此操作。

您将一维数组视为前 N 个元素是第一行,接下来的 N-1 个元素是第二行的(右 N-1 个元素),依此类推。

因为这个问题看起来和闻起来都像家庭作业,我认为这与适当的暗示差不多。

于 2012-04-03T20:20:32.347 回答