第7講 ポインタ
第7話 多次元配列と1次元配列の関係
012
前半は2次元配列、後半は1元配列を利用して実現するコード例
#include<stdio.h>
#include<stdlib.h> //malloc()を使うためにインクルード
void f(); //2次元配列による処理
void g(); //1次元配列による処理
int main() {
  f();
  printf("\n"); //改行
  g();
  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)printf(" %d ",a[i][j]);
      if (a[i][j]>=10)printf("%d ", a[i][j]);
    }
    printf("\n");
  }
}
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)printf(" %d ", a[6 * i + j]);
      if (a[6 * i + j] >= 10)printf("%d ", a[6 * i + j]);
    }
    printf("\n");
  }
}

また、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)printf(" %d ",*(a + 6 * i + j));
      if (*(a + 6 * i + j) >= 10)printf("%d ", *(a + 6 * i + j));
    }
    printf("\n");
  }
}
等でも大丈夫です。

次はf()が3次元で行ったことを、
g()は2次元で処理して、
011
を実現して下さい。




第6話へ   第8話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ