Rešitev: program Produkt matrik - 2. način (Java)

Iz MaFiRaWiki

Naloga: program Produkt matrik

Kako zaženemo program?

Primer za drjavo: java ProduktMatrik 2 3 1 1 1 1 1 1 2 2 2 2 2 2 (2 = št. vrstic mat1 (oz. stolpcev mat2), 3 = št. stolpcev mat1 (oz. vrstic mat2), 1,1,1... so elementi mat1, 2,2,2... so elementi mat2)

Pozor: ne pozabi na presledke med števili (zgoraj).

  1. public class ProduktMatrik{
  2. public static void main(String[] args){
  3. int n = Integer.parseInt(args[0]); //vnesi stevilo vrstic matrike 1 (oz. st. stolpcev mat2)
  4. int m = Integer.parseInt(args[1]); //vnesi stevilo stolpcev matrike 1 (oz. st. vrstic mat2)
  5. //program je napisan tako, da je vedno mozno zmnoziti matriko 1 in 2, ker sta oblike n*m in m*n
  6. int[][] mat1 = new int[n][m];
  7. int[][] mat2 = new int[m][n];
  8. for(int i=0; i<n; ++i){
  9. for(int j=0; j<m; ++j) mat1[i][j] = Integer.parseInt(args[i*m + j + 2]); //vnesi elemente matrike 1
  10. }
  11. for(int i=0; i<m; ++i){
  12. for(int j=0; j<n; ++j) mat2[i][j] = Integer.parseInt(args[i*n + j + 2 + n*m]); //vnesi elemente matrike 2
  13. }
  14. for(int i=0; i<n; ++i){
  15. for(int j=0; j<m; ++j){
  16. System.out.print(mat1[i][j] + " "); //izpis matrike 1
  17. }
  18. System.out.println();
  19. }
  20. System.out.println();
  21. for(int i=0; i<m; ++i){
  22. for(int j=0; j<n; ++j){
  23. System.out.print(mat2[i][j] + " "); //izpis matrike 2
  24. }
  25. System.out.println();
  26. }
  27. int[][] pr = new int[n][n]; //nova matrika n*n
  28. for(int i=0; i<n; ++i){
  29. for(int j=0; j<n; ++j){
  30. int s = 0;
  31. for(int k=0; k<m; ++k){
  32. s += mat1[i][k]*mat2[k][j]; //zmnozimo matriki in pristejemo k s
  33. }
  34. pr[i][j] = s; //ko se mnozenje za en element matrike pr konca, ga zapisemo
  35. }
  36. }
  37. System.out.println();
  38. for(int i=0; i<n; ++i){
  39. for(int j=0; j<n; ++j){
  40. System.out.print(pr[i][j] + " "); //izpis produktne matrike
  41. }
  42. System.out.println();
  43. }
  44. }
  45. }
Osebna orodja