第12講 分割ファイル・分割コンパイル 
第6話 自然配列・置換・左右対称変換
ヘッダーファイルa.hで代入してコンソール画面に出力させ
c
ヘッダーファイルb.hで置換変換をして表示させ
初心者
ヘッダーファイルc.hにおいて左右対称変換をして表示させる
基礎
プログラム解答例
ソースファイルm.cpp
#include"d.h"
#include"b.h"
#include"a.h"
#include"c.h"
int main(){
   f();
   g();
   h();
}
ヘッダーファイルa.h
void f(){
  int i,j;
   cout<<"自然配列"<<endl;
   for(i=0;i<10;i++){
     for(j=0;j<10;j++){
       a[i][j]=10*i+j+1;
       if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=10 && a[i][j]<100)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=100)cout<<a[i][j]<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
}
ヘッダーファイルb.h
void g(){
  int i,j;
   cout<<"置換変換"<<endl;
   for(i=0;i<10;i++){
     for(j=0;j<10;j++){
       a[i][j]=a[j][i];
     }
   }
   for(i=0;i<10;i++){
     for(j=0;j<10;j++){
       if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=10 && a[i][j]<100)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=100)cout<<a[i][j]<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
}
ヘッダーファイルc.h
void h(){
   int i,j,b[10][10];
   cout<<"左右対称変換"<<endl;
   for(i=0;i<10;i++){
     for(j=0;j<10;j++){
       b[i][j]=a[i][j];
     }
   }
   for(i=0;i<10;i++){
     for(j=0;j<10;j++){
       a[i][j]=b[i][9-j];
       if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=10 && a[i][j]<100)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=100)cout<<a[i][j]<<" ";
     }
     cout<<endl;
   }
   cout<<endl;
}
ヘッダーファイルd.h
#include<iostream>
using namespace std;
int a[10][10];

さて、今回はファイルを超えるグローバル変数を用意しましたが、
メモリー節約のためにグローバル変数は使用しない方がよいというのは事実ですので、
mainで2次元配列(実際には、ポインタのポインタ)を宣言し、
それを各関数に送るという形でファイルを跨ぐグローバル変数を解消しましょう。


第5話へ 第7話へ

戻る

C言語講義第1部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)