Pages: [1]   Go Down
Print
Author Topic: PRODOTTO DI MATRICI  (Read 439 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« on: 21-06-2010, 09:11:00 »

Ho un problema con questo esercizio: http://www.dmi.unict.it/~faro/prog2/quesiti/quesito22/phswvmq7.pdf
SE passo io i valori allora mi funziona, ma se devo farlo leggere da un file di input non funziona. Ho lasciato commentato la aprte che avevo provato a fare con il Tokenizer, ma è lasciato a metà.
Come posso risolvere?
Grazie a tutti.
Ecco il mio codice:
Code:
mport java.util.StringTokenizer;
import java.io.*;

public class ProdottoMatrici
{
public static void main(String []args) throws IOException
{
/*BufferedReader input=null;
BufferedWriter out=null;
try
{
input=new BufferedReader(new FileReader("input.txt"));
out=new BufferedWriter(new FileWriter("output.txt"));
String s;
while((s=input.readLine())!=null)
{
String []split=s.split("x");
int riga=0;
int colonna=0;
int [][]b;
for(int k=0;k<riga;k++)
{
for(int j=0;j<colonna;j++)
{
}
}
for(int i=0;i<split.length;i++)
{
System.out.println(split[i]);
}

}

}
catch(IOException e)
{
System.out.println(e.getMessage());
}
input.close();
out.close();
}*/
int [][] a={{1,1,1},{0,1,1}};
int [][]b={{0,1},{0,1},{1,0}};
int [][]c;
try {
c = moltiplicaMatrix(a, b);
System.out.println ("Matrice c:");
for(int i=0;i<c.length;i++)
{
for(int j=0;j<c[0].length;j++)
{
System.out.print(c[i][j] + " ");
}
System.out.println("");
}
System.out.println("");
}

catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public static int[][] moltiplicaMatrix(int[][] a, int[][] b) throws Exception {
if(a[0].length!=b.length) { //controllo che si possano moltiplicare
throw new Exception("Matrici non coerenti.");
}

int[][] unaMatrix; //[righe][colonne]
int m = a.length;
int n = b[0].length;
unaMatrix = new int[m][n]; //assegnazione dimensione della matrice unaMatrix

for (int i = 0; i < unaMatrix.length; i++) {//unaMatrix.length -> numero righe
for (int j = 0; j < unaMatrix[0].length; j++) { //unaMatrix[0].length -> numero colonne
unaMatrix[i][j] = 0;
}
}

for(int i=0; i<m; i++) {     //conta le righe di unaMatrix e di a, perchè si muovono insieme
for(int j=0; j<n ; j++) {  //si sposta tra le colonne (rimanendo sulla stessa riga) di unaMatrix
for(int k=0; k<b.length; k++) { //si sposta tra le colonne di b
unaMatrix[i][j] += (a[i][k]*b[k][j]);
}
}
} //fine for righe
return unaMatrix;
}

}
« Last Edit: 21-06-2010, 10:09:04 by bluegirl » Logged
Pages: [1]   Go Up
Print
Jump to: