编写函数来分配上三角矩阵

时间:2012-04-03 20:11:54

标签: c++ multidimensional-array matrix

我正在尝试编写一个函数来分配上三角矩阵。它应该返回一个指向已分配数组的第一个元素的指针。我还需要使用动态分配来确保分配所需内存的确切数量,但我不太清楚如何做到这一点...任何提示或建议将不胜感激!我是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;  
 }  

2 个答案:

答案 0 :(得分:1)

根据oli的评论,我认为你正在寻找

cin&gt;&gt; d; a [i] [j] = d;

VS

CIN&GT;&GT; d,&安培; A [1] [j]的;

我建议阅读...... http://www.cplusplus.com/doc/tutorial/basic_io/

theres your first issue

动态分配是通过像new和malloc试读的代码完成的......

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

至于如何存储你的上层矩阵...我建议只使用一个普通的2d矩阵,它可以更好地与大多数矩阵库一起工作。

祝你的作业好运。

答案 1 :(得分:0)

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

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

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