第11講 配列・ポインタを関数に渡す
第3話 2次元配列を関数に渡すさまざまな演習その1
解答例
#include<iostream>
using namespace std;
void f(int **a);
void g(int **a);
int main(){
int **a,i,j;
a=(int **)malloc(20);
for(i=0;i<6;i++)a[i]=(int *)malloc(24);
for(i=0;i<5;i++){
for(j=0;j<6;j++){
a[i][j]=6*i+j+1;
}
}
cout<<"変換前"<<endl;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
if(a[i][j]>=10)cout<<a[i][j]<<" ";
}
cout<<endl;
}
f(a);
cout<<endl;
cout<<"変換後"<<endl;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
if(a[i][j]<10)cout<<" "<<a[i][j]<<"
";
if(a[i][j]>=10)cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
void f(int **a){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<6;j++){
a[i][j]=2*a[i][j];
}
}
}
では問題です。
int **a,i,j;
a=(int **)malloc(20);
for(i=0;i<6;i++)a[i]=(int *)malloc(24);
for(i=0;i<5;i++){
for(j=0;j<6;j++){
a[i][j]=6*i+j+1;
}
}
の部分を
int **a,i,j;
a=(int **)malloc(20);
for(i=0;i<6;i++)a[i]=(int *)malloc(20);
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=5*i+j+1;
}
}
に変更して、2倍加する関数fの次にそれを置換(行と列を交換すること)する関数gを加えて
となるようにしましょう。解答例は30行下。
解答例
#include<iostream>
using namespace std;
void f(int **a);
void g(int **a);
int main(){
int **a,i,j;
a=(int **)malloc(20);
for(i=0;i<6;i++)a[i]=(int *)malloc(20);
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=5*i+j+1;
}
}
cout<<"変換前"<<endl;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
if(a[i][j]>=10)cout<<a[i][j]<<" ";
}
cout<<endl;
}
f(a);
cout<<endl;
cout<<"変換後"<<endl;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(a[i][j]<10)cout<<" "<<a[i][j]<<"
";
if(a[i][j]>=10)cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
void f(int **a){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=2*a[i][j];
}
}
}
void g(int **a){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=a[j][i];
}
}
}
ではさらに、置換した行列を左右に変換する関数hを加えて
となるようにしましょう。
第2話へ 第4話へ
C言語講義第1部へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)