C言語の問題です。 「3次元空間の三角形の3頂点の座標から、その3角形の重心と原点から重心までの距離を求める自作関数double cGravity(double(*p)[3],double *cg)のプログラムを作れ。引数(*p)[3]は3角形の3頂点の座標を格納した3行3列の2次元配列へのポインタ、*cgは3角形重心の座標を格納する1次元配列へのポインタである。戻り値は原点から3角形の重心までほ距離を返す。3角形の3頂点座標値および結果のモニタ表示は関数dimRanSetおよびdimPrintを用いてmain関数で行う仕様にせよ。」と言うプログラムの実行結果を以下の画像ようにしたいです。 以下のコードの①〜⑤の穴埋めの具体的なソースコードをわかる方がおられましたら是非よろしくお願いします。 #include<stdio.h> #include<stdlib.h> #include<math.h> #include<time.h> double cGravity(double(*p)[3], double* cg); void dimRanSet(int n, double* p); void dimPrint(int n, double* p); int main(void) { int i, seed; double tri[3][3], cg[3], dis; printf("input 乱数の種 => "); scanf("%d", &seed); if (seed < 0)srand((unsigned)time(NULL)); else srand(seed); //①.2次元配列1行ごと、関数dimRanSet参照 //②.dis=関数cGravity参照 //③.2次元配列1行ごと、関数dimPrint参照 //④.重心座標 配列cg、関数dimPrint参照 //⑤.原点-重心間距離dis表示 return 0; } void dimRanSet(int n, double* p) { int i; for (i = 0; i < n; i++)*(p + 1) = (double)rand() / RAND_MAX; } void dimPrint(int n, double* p) { int i; printf("%.6lf", *p); for (i = 1; i < n; i++)printf(",%.6lf", *(p + 1)); } double cGravity(double(*p)[3], double* cg) { int i, j; double distan = 0; for (i = 0; i < 3; i++) { *(cg + i) = (*p)[i]; for (j = 1; j < 3; j++) { *(cg + i) = *(cg + i) + (*(p + j))[i]; *(cg + i) = *(cg + i) / 3; distan = distan + sqrt(*(cg + i)); } } distan = sqrt(distan); return distan; }
C言語関連