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

第3話 2次元配列を社員(関数)に送る
実行画面
001 002 003 004 005 006 007 008 009 010
011 012 013 014 015 016 017 018 019 020
021 022 023 024 025 026 027 028 029 030
031 032 033 034 035 036 037 038 039 040
041 042 043 044 045 046 047 048 049 050
051 052 053 054 055 056 057 058 059 060
061 062 063 064 065 066 067 068 069 070
071 072 073 074 075 076 077 078 079 080
081 082 083 084 085 086 087 088 089 090
091 092 093 094 095 096 097 098 099 100

002 004 006 008 010 012 014 016 018 020
022 024 026 028 030 032 034 036 038 040
042 044 046 048 050 052 054 056 058 060
062 064 066 068 070 072 074 076 078 080
082 084 086 088 090 092 094 096 098 100
102 104 106 108 110 112 114 116 118 120
122 124 126 128 130 132 134 136 138 140
142 144 146 148 150 152 154 156 158 160
162 164 166 168 170 172 174 176 178 180
182 184 186 188 190 192 194 196 198 200
プロジェクト終了


@ 社長(main)は配列を
    int m[10][10];
  と定義する。
A 配列の各箱に1から100まで収納させる仕事を社員fに命じる。
B 表示の仕事を社員hに命じる。
C 配列の各要素を2倍にする仕事を社員gに命じる。
D 社長は、配列を社員f,g,hに渡す。
E 社員の型は、すべてvoid型とする。
という条件下で実現するプログラム例
#include<stdio.h>
#include<time.h>
void f(int m[10][10]);
void g(int m[10][10]);
void h(int m[10][10]);
int main(){
  int m[10][10];
  f(m);
  h(m);
  g(m);
  printf("\n");
  h(m);
  printf("プロジェクト終了\n");
  return(0);
}
void f(int m[10][10]){
  int i,j;
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
      m[i][j]=10*i+j+1;
    }
  }
}
void g(int m[10][10]){
  int i,j;
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
      m[i][j]=2*m[i][j];
    }
  }
}
void h(int m[10][10]){
  int i,j;
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
      if(m[i][j]<10){
        printf("00%d ",m[i][j]);
      }
      if(m[i][j]>=10 && m[i][j]<100){
        printf("0%d ",m[i][j]);
      }
      if(m[i][j]>=100){
        printf("%d ",m[i][j]);
      }
    }
    printf("\n");
  }
}
2次元配列を送るプログラム例

次の課題です。
第8講 4次魔方陣と6次魔方陣の作成
では、すべて2次元ポインタ
(正確にはポインタへのポインタといいますが、
本サイトでは、難しい表現方法はとりません。)
で、行いましたが、
すべてを2次元配列を送るという方法で実現して下さい。

4次魔方陣の実行画面
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

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


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


第8講を読み返して頂いても結構ですが、
できれば読まないで最初からコーティングして頂きたいと思います。
上の実行画面をよく見れば、
肝要な点=重要な点がなんであるか、分かるはずです。
そして、4次魔方陣については、
2つの方法がありましたので、

10 11 12
13 14 15 16

   ↓

15 14
12
10 11
13 16

2つともプログラミングして下さい。

まず、
4次魔方陣の実行画面
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

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

からです。
少なくても1,2時間は試行錯誤をして下さい。

第2話へ 第4話へ

a


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

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

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