andbin ha scritto:
Fab996 ha scritto:
Devo realizzare un programma che svolge il prodotto righe per colonne fra matrici. Finora ho scritto questo:
Il codice è incompleto e abbastanza confuso (da come è scritto, sembra che es. la definizione del metodo nuovo sia dentro il metodo main, cosa che ovviamente è un errore poiche illegale).
Se vuoi fare il prodotto tra matrici, ottenendo una matrice di risultato, basta che guardi (se non l'hai già fatto) il concetto su Wikipedia: https://it.wikipedia.org/wiki/Moltiplicazione_di_matrici
La moltiplicazione è fattibile solo ad una certa condizione e questa, tra l'altro, andrebbe anche testata nel tuo codice. Il resto è solo semplice matematica.
P.S. usi troppe variabili a singola lettera, poco significative. Abituati ad usare nomi più significativi, altrimenti il codice risulta davvero confuso e poco leggibile.
import fiji.io.*;
//Pre - n = f
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();
}
visualizza(prodotto(a,b));
}
public static int[][] prodotto(int[][] a, int[][] b) {
int RIGHE,COLONNE,i,j;
RIGHE = a.length;
COLONNE = b[0].length;
int[][] x;
x = new int[RIGHE][COLONNE];
for (i=0; i<RIGHE; i++) {
for (j=0; j<COLONNE; j++)
x[i][j] = rigacolonna(a,b,i,j);
}
return x;
}
public static int rigacolonna(int[][] a, int[][] b, int c, int d) {
int i,j,prod;
prod =0;
for (i=0; i<b.length; i++)
prod = prod+ a[c][i]*b[i][d];
return prod;
}
public static void visualizza(int[][] a) {
int i, j;
for (i=0; i<a.length; i++) {
for (j=0; j<a[i].length; j++)
System.out.print(a[i][j] + " ");
System.out.println();
}
}
}
Questo è il codice che ho scritto, però non capisco il perchè stampa sempre la matrice nulla...