Encore un tableau à deux dimensions, mais cette fois il y a plusieurs tests d’intégrité à effectuer (taille non-nulle des matrices, matrices de tailles compatibles pour la mutliplication etc…)
La remarque faite lors des deux exercices précédents est valable ici aussi: des parties importantes du codes sont dupliquées. La série 5 vous permettra de reprendre ce code en remédiant à cette situation.
import java.util.Scanner; class MulMat { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { int lignes = 0; int colonnes = 0; // Saisie de la 1ère matrice System.out.println("Saisie de la 1ere matrice :"); // On vérifie que le nombre de lignes est plus grand // que 0 do { System.out.print(" Nombre de lignes : "); lignes = scanner.nextInt(); } while (lignes < 1); // On vérifie que le nombre de colonnes est plus grand // que 0 do { System.out.print(" Nombre de colonnes : "); colonnes = scanner.nextInt(); } while (colonnes < 1); // Déclaration-construction de la 1ère matrice double[][] mat1 = new double[lignes][colonnes]; for (int row = 0; row < lignes; row++) { for (int col = 0; col < colonnes; col++) { System.out.print(" M[" + (row + 1) + "," + (col + 1) + "]="); mat1[row][col] = scanner.nextDouble(); } } // ... et on refait la même chose pour la 2ème matrice System.out.println("Saisie de la 2eme matrice :"); do { System.out.print(" Nombre de lignes : "); lignes = scanner.nextInt(); } while (lignes < 1); do { System.out.print(" Nombre de colonnes : "); colonnes = scanner.nextInt(); } while (colonnes < 1); double[][] mat2 = new double[lignes][colonnes]; for (int row = 0; row < lignes; row++) { for (int col = 0; col < colonnes; col++) { System.out.print(" M[" + (row + 1) + "," + (col + 1) + "]="); mat2[row][col] = scanner.nextDouble(); } } // Ici on multiplie les matrices if (mat1[0].length != mat2.length) { System.out.println("Multiplication de matrices " + "impossible !"); } else { // Déclaration-construction de la matrice résultat double[][] prod = new double[mat1.length][mat2[0].length]; for (int row = 0; row < mat1.length; row++) { for (int col = 0; col < mat2[0].length; col++) { prod[row][col] = 0.0; for (int i = 0; i < mat2.length; i++) { prod[row][col] += mat1[row][i] * mat2[i][col]; } } } // Affichage du résultat System.out.println("Résultat :"); for (int row = 0; row < prod.length; row++) { for (int col = 0; col < prod[row].length; col++) { System.out.print(prod[row][col] + " "); } System.out.println(); } } } }