問題の意味がよくわからなかった。
答えないからどうしようもないけど、
とりあえず与えられた点数を三次元配列に代入するだけでいいと見た。
ひとまずtensu1とtensu2という配列を準備して、適当に点数ぶち込んでそれをsanzi[2][4][3]という配列にぶち込むことにした。
頭の2に変数を置いて、これが0ならtensu1の値を、これが1ならtensu2の値を格納する、ってことで、とりあえず値の振り分け用といった感じ。動的?な感じではないわ。
プログラム
作成したプログラムは以下の通り。
#include <iostream>
void dainyu(const int a[4][3], const int b[4][3], int c[2][4][3]) {
int i, j, k;
for (k = 0; k < 2; k++) {
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
if (k == 0) {
c[k][i][j] = a[i][j];
}
else {
c[k][i][j] = b[i][j];
}
}
}
}
}
void print2(const int m[4][3]) {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%4d",m[i][j]);
}
putchar('\n');
}
}
void print3(const int n[2][4][3],int flag) {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%4d",n[flag][i][j]);
}
putchar('\n');
}
}
int main()
{
int tensu1[4][3] = { {98,97,96},{39,53,98},{31,53,95},{74,69,89} };
int tensu2[4][3] = { {54,67,89},{89,89,100},{100,100,100},{54,34,64} };
int sanzi[2][4][3] = { {{0}} };
puts("一回目の点数");
print2(tensu1);
putchar('\n');
puts("二回目の点数");
print2(tensu2);
putchar('\n');
puts("三次元配列の練習");
dainyu(tensu1,tensu2,sanzi);
puts("一回目の点数");
print3(sanzi,0);
putchar('\n');
puts("二回目の点数");
print3(sanzi,1);
putchar('\n');
}
実行結果は以下の通り。
一回目の点数
98 97 96
39 53 98
31 53 95
74 69 89
二回目の点数
54 67 89
89 89 100
100 100 100
54 34 64
三次元配列の練習
一回目の点数
98 97 96
39 53 98
31 53 95
74 69 89
二回目の点数
54 67 89
89 89 100
100 100 100
54 34 64
まあとりあえずできているのだろう。
まとめ
めんどくさいので3次元まで使いたくない。