入力された行列の転置行列を求めよ
プログラミングスレまとめ in VIPの練習問題を解いてみた
練習問題 - プログラミングスレまとめ in VIP
import java.util.*; class Tenchi { private static int[][] getGyouretu() { Scanner scan = new Scanner(System.in); System.out.println("何行何列の行列を入力しますか?"); System.out.println("行:"); int gyou = scan.nextInt(); System.out.println("列:"); int retu = scan.nextInt(); // 返却する行列 int[][] gyouretu = new int[gyou][retu]; System.out.println("行列を入力して下さい。数字は,で区切って下さい"); // 1行づつ作成 for (int i = 0; i < gyou; i++) { // 入力列数が正しいか判定 boolean retusu_flag; do { retusu_flag = false; String input = scan.next(); String[] input_arr = input.split(","); if (retu != input_arr.length) { retusu_flag = true; System.out.println("列数が不正です。再度入力して下さい。"); } else { // string型をint型にキャストしてgyouretuに格納 for (int j = 0; j < input_arr.length; j++) { gyouretu[i][j] = Integer.parseInt(input_arr[j]); } } } while (retusu_flag); } return gyouretu; } public static void main(String[] args) { //入力行列 int[][] gyouretu = getGyouretu(); /* // test出力 System.out.println("\n入力行列は"); for (int[] hairetu : gyouretu) { for (int i : hairetu) { System.out.print(i); System.out.print(" "); } System.out.println(""); } */ //転置行列作成 int[][] tenchi = new int[gyouretu[0].length][gyouretu.length]; for (int j = 0; j < gyouretu[0].length; j++) { for (int i = 0; i < gyouretu.length; i++) { tenchi[j][i] = gyouretu[i][j]; } } System.out.println("\nこの転置行列は"); for (int[] hairetu : tenchi) { for (int i : hairetu) { System.out.print(i); System.out.print(" "); } System.out.println(""); } } }
妙に長くなってしまいました。結構面白かったです。