第11講 配列を関数に送る
第4話 関数に2次元配列を送るの演習解答
(実際には1列)
解答コード例
class t{
public static void main(String args[]){
int[][] x=new int[4][4];
int[][] y=new int[4][4];
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=(int)(Math.random()*100);
}
}
System.out.println("配列xのデータ");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
g(x,y);
System.out.println("配列xを配列yにコピー");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(y[i][j]<10){
System.out.print (" ");
System.out.print(y[i][j]);
System.out.print (" ");
}
if(y[i][j]>=10 && y[i][j]<100){
System.out.print (" ");
System.out.print(y[i][j]);
System.out.print (" ");
}
if(y[i][j]>=100 && y[i][j]<1000){
System.out.print(y[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
f(x);
System.out.println("配列xのデータを2倍");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
h(x,y);
System.out.println("配列xのデータ復元");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
i(x);
System.out.println("配列xの転置");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
h(x,y);
System.out.println("配列xのデータ復元");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
j(x);
System.out.println("配列xの左右対称移動");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
h(x,y);
System.out.println("配列xのデータ復元");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
k(x);
System.out.println("配列xの上下対称移動");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
h(x,y);
System.out.println("配列xのデータ復元");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
l(x);
System.out.println("配列xの逆転置");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(x[i][j]<10){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=10 && x[i][j]<100){
System.out.print (" ");
System.out.print(x[i][j]);
System.out.print (" ");
}
if(x[i][j]>=100 && x[i][j]<1000){
System.out.print(x[i][j]);
System.out.print (" ");
}
}
System.out.println();
}
}
public static void f(int x[][]){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]*=2;
}
}
}
public static void g(int x[][],int y[][]){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
y[i][j]=x[i][j];
}
}
}
public static void h(int x[][],int y[][]){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=y[i][j];
}
}
}
public static void i(int x[][]){
int i,j;
int[][] w=new int[4][4];
for(i=0;i<4;i++){
for(j=0;j<4;j++){
w[i][j]=x[j][i];
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=w[i][j];
}
}
}
public static void j(int x[][]){
int i,j;
int[][] w=new int[4][4];
for(i=0;i<4;i++){
for(j=0;j<4;j++){
w[i][j]=x[i][3-j];
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=w[i][j];
}
}
}
public static void k(int x[][]){
int i,j;
int[][] w=new int[4][4];
for(i=0;i<4;i++){
for(j=0;j<4;j++){
w[i][j]=x[3-i][j];
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=w[i][j];
}
}
}
public static void l(int x[][]){
int i,j;
int[][] w=new int[4][4];
for(i=0;i<4;i++){
for(j=0;j<4;j++){
w[i][j]=x[3-j][3-i];
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
x[i][j]=w[i][j];
}
}
}
}
次の課題です。
今のコードはいちいち復元してから転置や対称移動していますが、
復元しないで転置→左右対称移動→上下対称移動→逆転置としていくとどうなるでしょうか。
第3話へ 第5話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部