第12講 分割ファイル・分割コンパイル
第6話 自然配列・置換・左右対称変換
ヘッダーファイルa.hで代入してコンソール画面に出力させ
ヘッダーファイル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入門講義(基礎から応用まで)