第8講 関数(2)
第6話 3次元配列を返したり、送ったりする例
(f()で3次元配列を作り、その3次元配列を利用して、g()ではデータ入力、h()ではデータ表示)
を実現するプログラム例
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int*** f(); //3次元配列を作る
void g(int ***a); //3次元配列にデータを入力
void h(int ***a); //3次元配列のデータを表示
int main() {
int ***a;
a = f(); //f()が作った3次元配列を受け取る
g(a); //3次元配列にデータを入力
h(a); //3次元配列のデータを表示
return(0);
}
//3次元配列を作る
int*** f() {
int ***x = (int ***)malloc(sizeof(int **) * 3);
for (int i = 0; i < 3; i++)x[i] = (int **)malloc(sizeof(int *) * 4);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++)x[i][j] = (int *)malloc(sizeof(int )
* 5);
}
return(x);
}
//3次元配列にデータを入力
void g(int ***a) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 5; k++)a[i][j][k] = 20 * i + 5 * j + k + 1;
}
}
}
//3次元配列のデータを表示
void h(int ***a) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 5; k++) {
if(a[i][j][k] < 10)cout<<" "<<a[i][j][k]<<"
";
if (a[i][j][k] >= 10)cout << a[i][j][k] << "
";
}
cout << endl; //改行
}
cout << endl; //改行
}
}