pl7_ex_dem1/Main.java
  1 package pl7_ex_dem1;
2
3 import java.util.Formatter;
4 import java.util.Scanner;
5
6 /** 7 * @author APROG 2009/2010 - 1ND 8 */ 9 public class Main {
10
11 private static Scanner inp = new Scanner(System.in);
12 private static Formatter out = new Formatter(System.out);
13
14 // mostra o conteúdo de uma matriz de inteiros no ecrã 15 public static void listaMatriz(int[][] m, int l, int c) {
16 out.format("%s%n", "Listagem da matriz:");
17
18 for (int i = 0; i < l; i++) {
19 for (int j = 0; j < c; j++) {
20 out.format("%5d", m[i][j]);
21 }
22 out.format("%n");
23 }
24 }
25
26 private static void leMatriz(int[][] m, int lin, int col) {
27
28 for (int l = 0; l < lin; l++) {
29 for (int c = 0; c < col; c++) {
30 out.format("Elemento da linha %d coluna %d:", l + 1, c + 1);
31 m[l][c] = inp.nextInt();
32 }
33 }
34 }
35
36 private static void trocaColunasMatriz(int ori, int dest, int[][] m, int lin) {
37 int temp;
38
39 for (int l = 0; l < lin; l++) {
40 temp = m[l][ori];
41 m[l][ori] = m[l][dest];
42 m[l][dest] = temp;
43 }
44 }
45
46 private static void ordenaColMatriz(int[][] m, int lin, int col) {
47
48 // actualizar a última linha com a soma 49 for (int c = 0; c < col; c++) {
50 m[lin][c] = 0;
51 for (int l = 0; l < lin; l++) {
52 m[lin][c] += m[l][c];
53 }
54 }
55
56 // ordenar colunas 57 for (int i = 0; i < col - 1; i++) {
58 for (int j = i + 1; j < col; j++) {
59 if (m[lin][i] > m[lin][j]) {
60 trocaColunasMatriz(i, j, m, lin+1);
61 }
62 }
63 }
64
65 }
66
67 /** 68 * Elabore um programa modular para ler uma matriz de números inteiros e 69 * ordenar as colunas, de forma crescente, segundo a soma dos elementos de 70 * cada coluna. A dimensão da matriz é definida pelo utilizador.
71 */ 72 public static void main(String[] args) {
73 int l, c;
74
75 // iniciar a matriz para teste 76 int[][] mat;
77
78 // pedir a dimensão da matriz 79 do {
80 out.format("Número de linhas:");
81 l = inp.nextInt();
82 } while (l < 1);
83
84 do {
85 out.format("Número de colunas:");
86 c = inp.nextInt();
87 } while (c < 1);
88
89
90 // reservar elementos da matriz (a linha extra é para a soma) 91 mat = new int[l+1][c];
92
93 // ler elementos inteiros para a matriz 94 leMatriz(mat, l, c);
95
96 // mostrar elementos da matriz 97 listaMatriz(mat, l, c);
98
99 // ordenar as colunas da matriz 100 ordenaColMatriz(mat, l, c);
101
102 // mostrar elementos da matriz 103 listaMatriz(mat, l, c);
104 }
105 }
106
107