第6講 配列
第4話 2次元配列
を実現するプログラム例
#include<iostream> //入出力のために組み込む
#include <ctime> //time()を使用できるようにインクルード
using namespace std; //coutを使えるようにするために必要
void f();
int main() {
f();
return(0);
}
void f() {
int a[3][4], i, j; //配列aと制御変数i,jの宣言
//srand((unsigned)time(NULL)); //乱数の系列決定するシード値を現在時刻から取得
//ランダムデータ発生
for (i = 0; i<3; i++) {
for (j = 0; j<4; j++) {
a[i][j] = rand() % 100;
}
}
//データ表示
for (i = 0; i<3; i++) {
for (j = 0; j<4; j++) {
if (a[i][j]<10)cout<<" "<< a[i][j] <<"
";
if (a[i][j] >= 10)cout<< a[i][j] <<" ";
}
cout<<endl; //改行
}
}
さて、の左右を反対にする、すなわち中央のところで線対称変換をさせたもの
も表示させるとすると、
#include<iostream> //入出力のために組み込む
#include <ctime> //time()を使用できるようにインクルード
using namespace std; //coutを使えるようにするために必要
void f();
int main() {
f();
return(0);
}
void f() {
int a[3][4], i, j; //配列aと制御変数i,jの宣言
//srand((unsigned)time(NULL)); //乱数の系列決定するシード値を現在時刻から取得
//ランダムデータ発生
for (i = 0; i<3; i++) {
for (j = 0; j<4; j++) {
a[i][j] = rand() % 100;
}
}
//データ表示
for (i = 0; i<3; i++) {
for (j = 0; j<4; j++) {
if (a[i][j]<10)cout<<" "<< a[i][j] <<"
";
if (a[i][j] >= 10)cout<< a[i][j] <<" ";
}
cout<<endl; //改行
}
cout<<endl; //改行
//左右反転した行列の表示
for (i = 0; i<3; i++) {
for (j = 0; j<4; j++) {
if (a[i][3 - j]<10)cout<<" "<< a[i][3 -
j] <<" ";
if (a[i][3 - j] >= 10)cout<< a[i][3 - j] <<"
";
}
cout<<endl; //改行
}
}
とします。
さて、のような数字の並びを行列といいます。
行は横列、列は縦列を表します。
ですから、この行列を3行4列の行列といいます。
そして、行と列を反対にした(縦横を取り換えた)
を転置行列といいます。
もとの行列・左右反転した行列・上限反転した配列・転置行列
のすべてを表示させるプログラムを考えて下さい。
転置は難しいですが粘り強く考えて下さい。