[Prodotto righe per colonne]

Fab996
Come faccio un'applicazione in java che fa il prodotto righe per colonne fra matrici ? Io finora ho scritto questo...
class ProdottoMatrici {
	public static void main(String[] args) {
		int[][] a,b;
		int i,j,l,z,f,d,m,n;
		System.out.println("Inserire l'ordine della prima matrice");
		m = Lettore.in.leggiInt();
		n = Lettore.in.leggiInt();
		a = new int[m][n];
		for (i=0; i<m; i++) {
			for(j=0; j<n; j++)
				a[i][j] = Lettore.in.leggiInt();
		}
		System.out.println();
		System.out.println("Inserire l'ordine della seconda matrice");
		f = Lettore.in.leggiInt();
		d = Lettore.in.leggiInt();
		System.out.println();
		b = new int[f][d];
		for (l=0; l<f; l++) {
			for(z=0; z<d; z++)
				a[l][z] = Lettore.in.leggiInt();
		}
		nuovo(a,b,m,d);
	public static int[][] nuovo(int[][] h, int[][] l, int w, int p) {
		int[][] c;
		int i,j;
		c = new int[w][p];
		for (i=0; i<h.length; i++)
				prodotto(h[i], l)
	public static int[][] prodotto(int[] a, int[][] b) {
		int i;
		for (i=0; i<a.length; i++)
			
			a[i]*b[i]

Risposte
apatriarca
Non capisco più di tanto cosa tu stia cercando di fare. prodotto riceve in ingresso un vettore (suppongo riga) a e una matrice b e restituisce una matrice. Ma se fai il prodotto tra un vettore riga e una matrice il risultato sarà un vettore riga e non una matrice.. Inoltre non sembri essere tu stesso sicuro su come utilizzare questo metodo.

In realtà per implementare il prodotto riga per colonna è sufficiente seguire la definizione in cui la sommatoria è sostituita da un ciclo. La struttura di base sarà quindi qualcosa tipo:
for (i = 0; i < w; ++i) {
    for (j = 0; j < p; ++i) {
        c[i][j] = 0.0;
        for (k = 0; k < h[0].length; ++k) {
            c[i][j] += ...;
        }
    }
}

Ovviamente devi aggiungere dei test per verificare se le dimensioni sono concordi (e inserire la formula corretta dopo il += ).

Fab996
ti ringrazio!

Fab996
"apatriarca":
Non capisco più di tanto cosa tu stia cercando di fare. prodotto riceve in ingresso un vettore (suppongo riga) a e una matrice b e restituisce una matrice. Ma se fai il prodotto tra un vettore riga e una matrice il risultato sarà un vettore riga e non una matrice.. Inoltre non sembri essere tu stesso sicuro su come utilizzare questo metodo.

In realtà per implementare il prodotto riga per colonna è sufficiente seguire la definizione in cui la sommatoria è sostituita da un ciclo. La struttura di base sarà quindi qualcosa tipo:
for (i = 0; i < w; ++i) {
    for (j = 0; j < p; ++i) {
        c[i][j] = 0.0;
        for (k = 0; k < h[0].length; ++k) {
            c[i][j] += ...;
        }
    }
}

Ovviamente devi aggiungere dei test per verificare se le dimensioni sono concordi (e inserire la formula corretta dopo il += ).


public static int[][] nuovo(int[][] a, int[][] b, int c, int d) { 
		int[][] x;
		x = new int[c][d];
		return x
	}	

Ho fatto questo metodo affinchè il nuovo array di array abbia il numero di righe del primo array di array e il numero delle colonne del secondo array di array.. .Però ora non riesco a moltiplicare la prima riga per la prima colonna...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.