我正在尝试编写一个函数来分配上三角矩阵。它应该返回一个指向已分配数组的第一个元素的指针。我还需要使用动态分配来确保分配所需内存的确切数量,但我不太清楚如何做到这一点...任何提示或建议将不胜感激!我是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;
}
答案 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个元素),依此类推。
因为这个问题看起来和闻起来像家庭作业,我认为这是适当的暗示。