//Esegue il prodotto di due matrici quadrate A*B=C
//Le matrici A e B sono generate con interi casuali

import java.util.Random;

public class MoltiplicaMatrici {
	
	// Per ottenere una corretta visualizzazione del risultato non scegliere
	// valori troppo grandi di DIMENSIONE e MAXELEM
	public static final int DIMENSIONE = 6;
	public static final int MAXELEM = 20;
			
	public static void main (String[] arg) {
		int[][] a, b, c;
		a=CreaMatrice();
		b=CreaMatrice();
		c=MoltiplicaMatrici(a,b);
		StampaProdotto(a,b,c);
	}
	
	//Crea una matrice quadrata di interi casuali nell'intervallo [0,MAXELEM)
	private static int[][] CreaMatrice()	{
		int[][] mat=new int[DIMENSIONE][DIMENSIONE];
		Random generator=new Random();
		for (int i=0; i<DIMENSIONE; i++)
			for (int j=0; j<DIMENSIONE; j++)
				mat[i][j]=generator.nextInt(MAXELEM);
		return mat;
	}

	//Restituisci il risultato del prodotto di due matrici di interi
	private static int[][] MoltiplicaMatrici(int[][] mat1, int[][] mat2)	{
		int[][] mat3= new int[DIMENSIONE][DIMENSIONE];
		for (int i=0; i<DIMENSIONE; i++)
			for (int j=0; j<DIMENSIONE; j++)	{
				mat3[i][j]=0;
				for (int k=0; k<DIMENSIONE; k++)
					mat3[i][j]=mat3[i][j]+mat1[i][k]*mat2[k][j];
				}
		return mat3;

	}

	//Stampa su console il prodotto di due matrici in un opportuno formato
	private static void StampaProdotto(int[][] mat1,int[][] mat2, int[][] mat3)	{
		
		for(int i=0; i<DIMENSIONE; i++)	{
			
			for(int j=0; j<DIMENSIONE; j++)		{
				if (mat1[i][j]>=100)
					System.out.print(" ");
				else if (mat1[i][j]>=10)
					System.out.print("  ");
					else System.out.print("   ");
				System.out.print(mat1[i][j]);
			}
			
			if(i==(DIMENSIONE/2))
				System.out.print(" *");
			else
				System.out.print("  ");
			
			for(int j=0; j<DIMENSIONE; j++)		{
				if (mat2[i][j]>=100)
					System.out.print(" ");
				else if (mat2[i][j]>=10)
					System.out.print("  ");
					else System.out.print("   ");
				System.out.print(mat2[i][j]);
			}
			
			if(i==(DIMENSIONE/2))
				System.out.print(" =");
			else
				System.out.print("  ");
			
			for(int j=0; j<DIMENSIONE; j++)	{
				if (mat3[i][j]>=100)
					System.out.print(" ");
				else if (mat3[i][j]>=10)
					System.out.print("  ");
					else System.out.print("   ");
				System.out.print(mat3[i][j]);
			}
			
			System.out.print("\n");
		
		}

	}

}


Questa la bacheca di Informatica Grafica, corso di laurea specialistica in Ing. Edile-architettura
by FdA
ultima modifica: 02/02/2005 11.30