1. public class naloga_8 {
  2. public static void main(String[] args) {
  3. int velikost = 0, od_ = 0, do_ = 0;
  4. try {
  5. String niz = javax.swing.JOptionPane.showInputDialog("Vpiši velikost matrike!");
  6. velikost = Integer.valueOf(niz).intValue();
  7. niz = javax.swing.JOptionPane.showInputDialog("Števila generiram od:");
  8. od_ = Integer.valueOf(niz).intValue();
  9. niz = javax.swing.JOptionPane.showInputDialog("Števila generiram do:");
  10. do_ = Integer.valueOf(niz).intValue();
  11. } catch(Exception e) {
  12. System.exit(0);
  13. }
  14.  
  15. if(od_ > do_) {
  16. int temp = do_;
  17. do_ = od_;
  18. od_ = temp;
  19. }
  20. od_ *= -1;
  21.  
  22. int[][] matrika = new int[velikost][velikost];
  23.  
  24. polni_matriko(matrika, od_, do_);
  25.  
  26. int[] max = getMax(matrika);
  27. System.out.println("Najvecje stevilo je: " + max[0] + " nahaja se na koordinatah: " + max[1] + ", " + max[2]);
  28. System.out.println();
  29.  
  30. vsotaDiagonale(matrika);
  31.  
  32. int[] vsoti = vsotaZgorajSpodaj(matrika);
  33. if(vsoti[0] > vsoti[1]) {
  34. System.out.println("Vsota stevil nad diagonalo je vecja (" + vsoti[0] + ").");
  35. } else if(vsoti[0] < vsoti[1]) {
  36. System.out.println("Vsota stevil pod diagonalo je vecja (" + vsoti[1] + ").");
  37. } else if(vsoti[0] == vsoti[1]) {
  38. System.out.println("Vsoti stevil nad in pod diagonalo sta enaki (" + vsoti[0] + ").");
  39. }
  40. System.out.println();
  41.  
  42.  
  43. izpis_matrike(matrika, maxMest(max[0]));
  44.  
  45. System.exit(0);
  46. }
  47.  
  48. private static void polni_matriko(int[][] matrika, int od_, int do_) {
  49. for(int i = 0; i < matrika.length; i++) {
  50. for(int j = 0; j < matrika[i].length; j++) {
  51. matrika[i][j] = (int)Math.round(Math.random() * (od_ + do_) - od_);
  52. }
  53. }
  54. }
  55.  
  56. private static int[] getMax(int[][] matrika) {
  57. // 0 - max st.
  58. // 1 - i koordinata
  59. // 2 - j koordinata
  60. int[] max = new int[3];
  61.  
  62. for(int i = 0; i < matrika.length; i++) {
  63. for(int j = 0; j < matrika[i].length; j++) {
  64. if(i == 0 && j == 0 || max[0] < matrika[i][j]) {
  65. max[0] = matrika[i][j];
  66. max[1] = i;
  67. max[2] = j;
  68. }
  69. }
  70. }
  71.  
  72. return max;
  73. }
  74.  
  75. private static void vsotaDiagonale(int[][] matrika) {
  76. int vsota = 0;
  77.  
  78. for(int i = 0; i < matrika.length; i++) {
  79. vsota += matrika[i][i];
  80. }
  81.  
  82. System.out.println("Vsota diagonale je: " + vsota);
  83. System.out.println();
  84. }
  85.  
  86. public static int[] vsotaZgorajSpodaj(int[][] matrika) {
  87. // 0 - zg. vsota
  88. // 1 - sp. vsota
  89. int[] vsoti = new int[2];
  90. for(int i = 0; i < matrika.length; i++) {
  91. for(int j = 0; j < matrika[i].length; j++) {
  92. if(i < j) { // zgoraj
  93. vsoti[0] += matrika[i][j];
  94. } else if(i > j) { // spodaj
  95. vsoti[1] += matrika[i][j];
  96. }
  97. }
  98. }
  99.  
  100. return vsoti;
  101. }
  102.  
  103. private static int maxMest(int stevilo) {
  104. int mest;
  105.  
  106. for(mest = 0; stevilo > 0; stevilo /= 10, mest++);
  107.  
  108. return mest;
  109. }
  110.  
  111. private static void izpis_matrike(int[][] matrika, int maxMest) {
  112. for(int i = 0; i < matrika.length; i++) {
  113. for(int j = 0; j < matrika[i].length; j++) {
  114. System.out.format("%" + (maxMest + 1) + "d ", matrika[i][j]);
  115. }
  116. System.out.println();
  117. }
  118. }
  119. }