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

oliのコメントによると、私はあなたがやろうとしていると思います

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

vs

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

次のようなものを読むことをお勧めします.... http://www.cplusplus.com/doc/tutorial/basic_io/

あなたの最初の問題があります

動的割り当ては、newやmallocのようなコードを介して行われます。

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

上位の行列を保存する方法については...通常の2次元行列を使用することをお勧めします。ほとんどの行列ライブラリでうまく機能する可能性があります。

宿題を頑張ってください。

于 2012-04-03T20:26:31.610 に答える
0

通常、サイズ N の上三角行列を割り当てるときは、N + N-1 ... + 1 (整数の合計を調べる) の要素を割り当ててから、アクセス メカニズム (おそらくここで意図されているもの) を作成する必要があります。要素 M(i,j) が必要な場合、(ほぼ)半分の要素が欠落しているという事実にもかかわらず、行 i、列 j の要素を取得します。または、マトリックス操作コードでマトリックスを使用する場合は、手動でそれを行います。

1 次元配列は、最初の N 要素が最初の行であり、次の N-1 要素が (右側の N-1 要素の) 2 行目である、というように扱われます。

この質問は見た目も匂いも宿題のようなものなので、ヒントはこれくらいで十分だと思います。

于 2012-04-03T20:20:32.347 に答える