データの数が多すぎて、配列に入りきらないので、
new/deleteやmallocで、領域を確保しようとして、
以下のようなプログラムを作りました。
double **x,*y;
/*データの数を入力*/
printf(馬のパターン数は? );
scanf(%d, &uma/*n*/);
printf(属性の数は? );
scanf(%d, &zoku/*m*/);
/* 領域の確保*/
x = new double * [uma];
y = new double [uma];
for(i1=0; i1<zoku; i1++){
x[i1] = new double [zoku];
for(i2=0;i2<zoku;i2++){
if(i2==0)
x[i1][0]=1;
else
x[i1][i2] = 2.5;
}
}
for(i1=0;i1<uma;i1++){
y[i1]=3.5;
}
と、したら、xとyの領域は確保できました。
例えば、
a(double *i); /*行列Aの先頭のアドレスをiに引きわたす*/
関数があって、
double A[][3]の配列だったら、
a(A[0]);
というように呼び出せば、行列Aの先頭のアドレスが
iに引きわたるのですが、
同じようのことを、上で定義したxとyでも、
やりたいのですが、
どうすればいいですか?
よろしくお願いいたします。
int n=10;
int m=10;
int i;
double **pp = new double*[n];
double *p = new double[n*m];
for (i=0 ; i<n ; i++) {
pp[i] = &p[n*i];
}
こういうことでしょうか?
pp[0] または p を関数に渡せば要素数 (n*m) の1次元配列のように扱えます。
kazumaさん、ありがとうございました。
解決いたしました!