k_mishima
20-01-2011, 18:38
Salve, ho una funzione che utilizza un array 1D come input che non posso modificare e una matrice 2D che deve essere passata 1 riga per volta alla funzione e non riesco a scrivere il codice.
In pratica ho questa situazione
public class Main {
public static void main(String[] args) {
int width = 3, height = 3;
float[][] matrice = new float[9][9];
float[] occorrenza = new float[9];
float[][] risultato = new float[3][3];
for (int s=0; s<width; s++){
for (int t=0; t<height; t++){
for (int x=s; x<width; x++){
for (int y=t; y<height; y++){
matrice[s*width+t][x*width+y] = matrice[x*width+y][s*width+t] = (s*t+x*y);
}
}
System.arraycopy(matrice, s*t, occorrenza, 0, width*height);
risultato[s][t] = funzioneCheAccettaSoloArray (occorrenza);
}
}
for (int i=0; i<width*height; i++)
for (int j=0; j<width*height; j++)
System.out.println(i + "," + j + " " + matrice[i][j]);
}
}
Non badate al contenuto della matrice ho messo valori a caso per fare l'esempio.
Guardate la riga dell'arraycopy. Il tentativo è di copiare in un array chiamato occorrenze grande 9 float, una riga della matrice, calcolare il risultato con la funzioneCheAccettaSoloArray, e ciclare con i for esterni s e t che copiano ogni volta la riga successiva di matrice.
Non devo per forza usare un'occorrenza, posso pure passare direttamente le righe della matrice, ma non riesco.
Qualcuno sa cosa fare? Grazie
In pratica ho questa situazione
public class Main {
public static void main(String[] args) {
int width = 3, height = 3;
float[][] matrice = new float[9][9];
float[] occorrenza = new float[9];
float[][] risultato = new float[3][3];
for (int s=0; s<width; s++){
for (int t=0; t<height; t++){
for (int x=s; x<width; x++){
for (int y=t; y<height; y++){
matrice[s*width+t][x*width+y] = matrice[x*width+y][s*width+t] = (s*t+x*y);
}
}
System.arraycopy(matrice, s*t, occorrenza, 0, width*height);
risultato[s][t] = funzioneCheAccettaSoloArray (occorrenza);
}
}
for (int i=0; i<width*height; i++)
for (int j=0; j<width*height; j++)
System.out.println(i + "," + j + " " + matrice[i][j]);
}
}
Non badate al contenuto della matrice ho messo valori a caso per fare l'esempio.
Guardate la riga dell'arraycopy. Il tentativo è di copiare in un array chiamato occorrenze grande 9 float, una riga della matrice, calcolare il risultato con la funzioneCheAccettaSoloArray, e ciclare con i for esterni s e t che copiano ogni volta la riga successiva di matrice.
Non devo per forza usare un'occorrenza, posso pure passare direttamente le righe della matrice, ma non riesco.
Qualcuno sa cosa fare? Grazie