1 1 0 1 Assignment_1.java 課題 1: チェッカー / class Assignment_1 public static void main(string[] args) int i,j; チェッカー用の 次元配列 int[][] checker=new int[][]; チェッカーパターンを書き込む for(i=0;i<checker.length;i++) for(j=0;j<checker[i].length;j++) if((i+j)%==0 (i-j)%==0)checker[i][j]=1; else checker[i][j]=0; チェッカーパターンを表示する for(i=0;i<checker.length;i++) for(j=0;j<checker[i].length;j++) if(checker[i][j]==1)system.out.print(" "); else System.out.print(" ");
1 1 0 1 0 1 Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 int[][] t_array = new int[][]; 転置行列 処理内容の出力 System.out.println(" 転置行列を求めます "); 行列の出力 System.out.println(" 行列 :"); for(i=0;i<array.length;i++) for(j=0;j<array[i].length;j++) System.out.printf("%d ",array[i][j]); System.out.printf("\n"); 行列の転置 for(i=0;i<array.length;i++) for(j=0;j<array[i].length;j++) t_array[j][i]=array[i][j]; 転置行列の出力 System.out.println(" 転置行列 : "); for(i=0;i<t_array.length;i++) for(j=0;j<t_array[i].length;j++) System.out.printf("%d ",t_array[i][j]); System.out.printf("\n");
1 1 0 1 0 1 0 1 0 Assignment_.java 課題 : 行列の積 / class Assignment_ public static void main(string[] args) int i,j,k; int[][] array_a = 1,, 1,-, -, 1,-, 0, 1,-1, 1,-1; 行列 A int[][] array_b = 1, 1,,,-,-1, -1,, 1,, 1, ; 行列 B int[][] array_ab = new int[][]; 行列の積 AB 処理内容の出力 System.out.println(" 行列の積を求めます "); つの行列を出力 for(i=0;i<array_a.length;i++) for(j=0;j<array_a[i].length;j++) System.out.printf("%d ",array_a[i][j]); System.out.printf("\n"); System.out.printf("X\n"); for(i=0;i<array_b.length;i++) for(j=0;j<array_b[i].length;j++) System.out.printf("%d ",array_b[i][j]); System.out.printf("\n"); System.out.printf("=\n"); 積を求める配列を0で初期化 for(i=0;i<array_ab.length;i++) for(j=0;j<array_ab[i].length;j++) array_ab[i][j]=0; 行列の積 for(i=0;i<array_a.length;i++) for(j=0;j<array_b[0].length;j++) for(k=0;k<array_a[0].length;k++) array_ab[i][j]+=array_a[i][k]*array_b[k][j]; 積の出力 for(i=0;i<array_ab.length;i++) for(j=0;j<array_ab[i].length;j++) System.out.printf("%d ",array_ab[i][j]); System.out.printf("\n"); 1
1 1 0 1 0 1 0 1 0 1 Assignment_.java 課題 : 成績処理 / import java.io.*; class Assignment_ public static void main(string[] args) throws IOException int i,j; int num; 学生数 String[] student_id; 各学生の学籍番号 int[][] score_table; 各学生の 科目の点数 int[] total; 各学生の点数の合計 int[] ranking; 順位 int rnk, id_max, max; 順位を求めるために使用 キーボードの準備 BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); 処理内容の出力 System.out.println(" 成績処理を行います "); 学生数を入力 System.out.println(" 学生数を入力してください "); num=integer.parseint(br.readline()); 配列要素の確保と初期化 student_id = new String[num]; score_table = new int[num][]; total = new int[num]; ranking = new int[num]; for(i=0;i<num;i++) student_id[i]=""; for(j=0;j<;j++) score_table[i][j]=0; total[i]=0; ranking[i]=0; 各学生の学籍番号と点数を入力する for(i=0;i<num;i++) System.out.println((i+1)+" 人目 :"); System.out.print(" 学籍番号?>"); student_id[i]=br.readline(); for(j=0;j<;j++) System.out.print(" 科目 "+(j+1)+" の点数?>"); score_table[i][j]=integer.parseint(br.readline()); 各学生の成績を集計する for(i=0;i<num;i++) 合計 for(j=0;j<;j++) total[i]+=score_table[i][j];
0 1 0 1 0 1 成績に順位をつける rnk=1; 1 位から順番につける while(rnk<=num) max=0; id_max=0; for(i=num-1;i>=0;i--) 順位がついていない学生でトップを探す if(ranking[i]!=0)continue continue; 順位がついている学生をスキップする if(max<=total[i]) max=total[i]; id_max=i; ranking[id_max]=rnk; rnk++; 集計結果を表形式で出力する System.out.println(" 番号 \t 科目 1\t 科目 \t 科目 \t 合計 \t 順位 "); for(i=0;i<num;i++) System.out.print(student_ID[i]+"\t"); for(j=0;j<;j++) System.out.print(score_table[i][j]+"\t"); System.out.print(total[i]+"\t"+ranking[i]);
1 1 0 1 Assignment_.java 課題 : アスキーアート / class Assignment_ public static void main(string[] args) 数値パターン int[][] figure=0,1,0,0,0,0,0,0,1,0,0,0,0,,,,1,,,0,,,,0,,,,1,,,,0,0,,1,,,,0, 0,,,,0,0,0,0,,,,0,0; 0 次元行列の表示 i=0;i<figure.length;i++) j=0;j<figure[i].length;j++) 各数値に対応する文字を出力 switch(figure[i][j]) case 0:System.out.print(' ');break case 1:System.out.print('_');break case :System.out.print('<');break case :System.out.print('\'');break case :System.out.print(')');break case :System.out.print(',');break case :System.out.print('/');break case :System.out.print('(');break case :System.out.print('=');break case :System.out.print('-');break 改行は一行毎に入れる
1 1 Assignment_.java 課題 : ドリルの採点 / class Assignment_ public static void main(string[] args) ドリル答案 int[][] ans=,,,,,, -,,-,,,1, -,-,; ドリルの表示と採点 i=0;i<ans.length;i++) if(ans[i][0] + ans[i][1] == ans[i][]) System.out.print(" "); else System.out.print(" "); System.out.println(" 問 "+(i+1)+" "+ans[i][0]+"+"+ans[i][1]+"="+ans[i][]);
1 1 0 1 0 1 0 1 0 1 0 1 Assignment_.java 課題 : 迷路脱出 / import java.util.*; class Assignment_ public static void main(string[] args) int[][] map= マップデータ 1,0,1,1,1, - 1は壁 1,0,0,0,1, - 0は道 1,1,1,0,1, - はゴール 1,0,0,0,1, 1,1,,1,1; int[] user_pos=0,1; 現在位置 int[] user_pos_can=new new int[]; 次の移動先候補 char key; 移動用キー入力 boolean ok; 移動先に移動可能か? Scanner scr=new Scanner(System.in); do 描画 i=0; i<map.length; i++) j=0; j<map[i].length; j++) if(user_pos[0]==i && user_pos[1]==j) System.out.print(" "); else else switch(map[i][j]) case 0: System.out.print(" ");break case 1: System.out.print(" ");break case : System.out.print(" ");break ゴールのチェック if(map[user_pos[0]][user_pos[1]]==) System.out.println(" ゴールです!!"); キー入力と移動候補座標 user_pos_can[0]=user_pos[0]; user_pos_can[1]=user_pos[1]; key=scr.next().charat(0); switch(key) case 'w': user_pos_can[0]-=1;break case 'a': user_pos_can[1]-=1;break case 's': user_pos_can[0]+=1;break case 'd': user_pos_can[1]+=1;break 移動候補座標のチェック ok=true true; if(!(user_pos_can[0] >=0 && user_pos_can[0] < map.length && user_pos_can[1] >=0 && user_pos_c an[1] < map[0].length)) ok=false false; if(ok==true && map[user_pos_can[0]][user_pos_can[1]]==1) ok=false false; 現在地の更新 if(ok==true true) user_pos[0]=user_pos_can[0]; user_pos[1]=user_pos_can[1]; while while(true true);
Assignment_.java 1 1 1 0 1 0 1 0 1 0 1 0 1 Assignment_.java 課題 : 宝探しゲーム / import java.io.*; class Assignment_ public static void main(string[] args) throws IOException BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); int[][] map=new int[][]; 宝地図 int trow, tcol; 宝の場所 int row, col; 入力する場所 boolean gotit=false false; 見つかったかどうかのフラグ 地図に 0 を代入します 0 - 掘っていない場所 1 - 掘ったとき 何もなかった場所 - 掘ったとき お宝があった場所 i=0;i<;i++) j=0;j<;j++) map[i][j]=0; 宝の場所をランダムに決定します trow = (int int)(*math.random()); tcol = (int int)(*math.random()); do 地図を表示します i=0;i<;i++) j=0;j<;j++) if(map[i][j]==0)system.out.print(" "); else if(map[i][j]==1)system.out.print(" "); else System.out.print(" "); 宝が見つかったら終了します if(gotit==true true)break System.out.println("\n 掘る場所を入力してください "); 行 [0~] と列 [0~] を入力します do System.out.println(" 行 [0~]?"); row = Integer.parseInt(br.readLine()); while while(row<0 row>); do System.out.println(" 列 [0~]?"); col = Integer.parseInt(br.readLine()); while while(col<0 col>); 地図の更新をしてメッセージを表示します if(row==trow && col==tcol) 見つかった場合 map[row][col]=; System.out.println(" お宝発見 "); 終了するようにフラグを設定します gotit=true true; else 見つからなかった場合 map[row][col]=1; int tmpr = row-trow; int tmpc = col-tcol; 探した場所の周囲 ( 上下左右斜め ) にある場合はお知らせします if( tmpr>=-1 && tmpr<=1 && tmpc>=-1 && tmpc<=1) System.out.println(" ピッピッ!!"); while while(true true);
1 1 0 1 0 1 0 1 0 1 0 1 0 1 Assignment_.java 課題 : ドット描画 / import java.io.*; class Assignment_ public static void main(string[] args) throws IOException キーボードの準備 BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); ドット画面を保持する 次元配列 - 0: 1: を表す int[][] dots = new int[][]; 始点座標と終点座標 int sx, sy, dx, dy; 全てゼロで初期化 i=0;i<dots.length;i++) j=0;j<dots[i].length;j++) dots[i][j] = 0; do ドット画面の表示 i=0;i<dots.length;i++) j=0;j<dots[i].length;j++) System.out.print(dots[i][j]==0?" ":" "); 終了メニュー System.out.print(" 線を引きますか?(y or else)"); char ans = br.readline().charat(0); if(ans!= 'y') 座標の入力 do System.out.print(" 始点 x 座標を入力してください "); sx = Integer.parseInt(br.readLine()); while(sx<0 sx>=dots[0].length); do System.out.print(" 始点 y 座標を入力してください "); sy = Integer.parseInt(br.readLine()); while(sy<0 sy>=dots.length); do System.out.print("-> 終点 x 座標を入力してください "); dx = Integer.parseInt(br.readLine()); while(dx<0 dx>=dots[0].length); do System.out.print("-> 終点 y 座標を入力してください "); dy = Integer.parseInt(br.readLine()); while(dy<0 dy>=dots.length); 直線の描画 double vecx, vecy; double len; - 始点から終点のベクトル vecx = dx - sx; vecy = dy - sy; - 単位ベクトルを計算 len = Math.sqrt(vecx*vecx+vecy*vecy); vecx /= len; vecy /= len; - 始点に単位ベクトルを加算しながらドットを塗りつぶし double cx, cy; cx = sx; cy = sy; while(true) dots[(int)(cy+0.)][(int)(cx+0.)] = 1; cx += vecx; cy += vecy; if(math.sqrt((cx-sx)*(cx-sx)+(cy-sy)*(cy-sy))>len+0.) while(true);