第14講 配列を引数にして、配列を社員(関数)に送る

第6話 6次魔方陣を配列を送ることによって実現する

6次魔方陣の実行画面
01 02 03 04 05 06
07 08 09 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36

36 32 04 03 05 31
12 29 27 10 26 07
19 17 22 21 14 18
13 20 16 15 23 24
25 11 09 28 08 30
06 02 33 34 35 01

を実現するプログラム例
#include<stdio.h>
#include<stdio.h>
void f(int x[6][6]); //自然配列を作成する社員
void g(int x[6][6]); //データを表示する社員
void h(int x[6][6]); //自然配列の対角線のデータを交換して4次魔方陣を作成する社員
int main(){
  int i;
  int x[6][6];
  f(x);
  g(x);
  h(x);
  printf("\n");
  g(x);
}
void f(int x[6][6]){
  int i,j;
  for(i=0;i<6;i++){
    for(j=0;j<6;j++){
      x[i][j]=6*i+j+1;
    }
  }
}
void g(int x[6][6]){
  int i,j;
  for(i=0;i<6;i++){
    for(j=0;j<6;j++){
      if(x[i][j]<10)printf("0%d ",x[i][j]);
      if(x[i][j]>=10)printf("%d ",x[i][j]);
    }
    printf("\n");
  }
}
void h(int x[6][6]){
  int w,i;
  //対角線点対称移動
  for(i=0;i<3;i++){
    w=x[i][i];
    x[i][i]=x[5-i][5-i];
    x[5-i][5-i]=w;
  }
  for(i=0;i<3;i++){
    w=x[i][5-i];
    x[i][5-i]=x[5-i][i];
    x[5-i][i]=w;
  }
  //左右線対称移動
  for(i=0;i<3;i++){
    w=x[i][(i+2)%3];
    x[i][(i+2)%3]=x[i][5-(i+2)%3];
    x[i][5-(i+2)%3]=w;
  }
  //上下線対称移動
  for(i=0;i<3;i++){
    w=x[(i+2)%3][i];
    x[(i+2)%3][i]=x[5-(i+2)%3][i];
    x[5-(i+2)%3][i]=w;
  }
}
2次元配列を渡すことによる6次魔方陣の作成

第14講最後の課題です。
第10講で作ったローカル変数版魔方陣自動生成ソフトを、
2次元配列を送るという方法で書き直して下さい。
ここでも復習のために、
なるべく第10講第9話を読まないで、
2時間は、試行錯誤して実現しましょう。
n=4
10 04 15 05
07 13 02 12
06 16 03 09
11 01 14 08

10 04 15 05
07 13 02 12
01 11 08 14
16 06 09 03

10 04 15 05
13 07 12 02
03 09 06 16
08 14 01 11

10 04 15 05
13 07 12 02
08 14 01 11
03 09 06 16

10 04 05 15
13 07 02 12
03 09 16 06
08 14 11 01

10 04 05 15
13 07 02 12
08 14 11 01
03 09 16 06

10 04 05 15
07 13 12 02
11 01 08 14
06 16 09 03

10 04 05 15
07 13 12 02
16 06 03 09
01 11 14 08

10 04 07 13
15 05 02 12
01 11 16 06
08 14 09 03

10 04 07 13
15 05 02 12
06 16 11 01
03 09 14 08

生成された4次魔方陣=10





第5話へ 第7話へ

a


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

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ