Per carità! L'indentazione, ti prego! Comunque ti commento il codice riga per riga
Avrei anche potuto svolgere l'esercizio al posto tuo, ma non ti servirebbe a nulla.codice:public static int escursione(int[][] M,int i) { for (i=0;i<M.length;i++) { for (int j=0;j<M[i].length;j++) { //non c'è bisogno che scrivi M[i], va bene anche M[0] int max=v[0]; //dichiari il massimo ad ogni ciclo e l'inizializzi a v[0]? In questo caso //ad ogni iterazione il massimo varrà sempre v[0], qualunque esso sia. //affinché funzioni devi inizializzare il massimo fuori dalla matrice //c'è anche da dire che il vettore v non esiste, forse intendevi M[i][0] (cioè la riga i della //matrice nella colonna 0) if (v[i] > max) { //anche qua il vettore v non esiste, e se non te ne sei accorta non stai //iterando un bel niente, hai dichiarato la variabile nel for come j, i invece è la riga che ti viene // passata come parametro, dunque sostituisci v[i] con M[i][j] max=v[i]; //come sopra, sostituisci v[i] con M[i][j] for (int x=0;x<v.length;x++) { //ma da dove te lo sei uscito fuori sto v? int min=v[0]; if (v[x] < min) { min=v[x]; //tutto come sopra return max-min; //metti max-min tra parentesi in quanto è un operazione algebrica, dunque //return (max-min) //in più se non te ne sei accorta il return è dentro l'if, chiudi l'if e tutte le altre parentesi graffe //prima di ritornare l'escursione } } } } } } }//INDENTAZIONE! E' UN MACELLO! public static int [] filtraEscursioni (int [] [] M,int k) { int [] v=new int[M.length]; //finalmente ci siamo con la dichiarazione del vettore int count=0; for (int i=0;i<M.length;i++) { for (int j=0;j<M[i].length;j++) { if (M[i][j] <= k) { count++; if (count == 0) { //hai incrementato la variabile count, dunque non sarà MAI uguale a 0 v[i]=M[i][j]; } //in questo caso v[i] conterrà l'ultimo valore della riga M[i], cosa volevi fare? return v; } } } } }
Prova a correggerlo come ti ho suggerito.


Rispondi quotando