第7講 ポインタ
第7話 多次元配列と1次元配列の関係
前半は2次元配列、後半は1元配列を利用して実現するコード例
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //2次元配列による処理
void g(); //1次元配列による処理
int main() {
f(); //2次元配列による処理
cout << endl; //改行
g(); //1次元配列による処理
return(0);
}
void f() {
int i, j;
//2次元配列の用意
int **a = (int **)malloc(sizeof(int *) * 7);
for (i = 0; i < 7; i++)a[i] = (int *)malloc(sizeof(int) * 6);
//データ作成
for (i = 0; i < 7; i++) {
for (j = 0; j < 6; j++) {
a[i][j] = 6 * i + j + 1;
}
}
//データの表示
for (i = 0; i < 7; i++) {
for (j = 0; j < 6; j++) {
if (a[i][j]<10)cout << " " << a[i][j] << " ";
if (a[i][j] >= 10)cout << a[i][j] << " ";
}
cout << endl; //改行
}
}
void g() {
int *a = (int *)malloc(sizeof(int *) * 42);
//データ作成
for (int i = 0; i < 42; i++) {
a[i] = i + 1;
}
//データの表示
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 6; j++) {
if (a[6 * i + j]<10)cout << " " << a[6 * i + j] << " ";
if (a[6 * i + j]>=10)cout << a[6 * i + j] << " ";
}
cout << endl; //改行
}
}
また、g()は
void g() {
int i, j;
//2次元配列の用意
int *a = (int *)malloc(sizeof(int) * 42);
//データ作成
for (i = 0; i < 7; i++) {
for (j = 0; j < 6; j++) {
*(a + 6 * i + j) = 6 * i + j + 1;
}
}
//データの表示
for (i = 0; i < 7; i++) {
for (j = 0; j < 6; j++) {
if (*(a + 6 * i + j) <10)cout << " " << *(a + 6 * i + j) << " ";
if (*(a + 6 * i + j) >=10)cout << a[6 * i + j] << " ";
}
cout << endl; //改行
}
}
等でも大丈夫です。
次はf()が3次元で行ったことを、
g()は2次元で処理して、
を実現して下さい。