Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    residenza
    Catanzaro
    Messaggi
    2

    [Java] Codice non funzionante. Dove sbaglio?

    Non mi escono i seguenti metodi:
    1) metodo escursione che riceve una matrice di interi M e un indice di riga i e restituisce la differenza tra l'elemento di valore massimo e l'elemento di valore minimo sulla riga i-esima di M.
    2) metodo filtraEscursioni che riceve una matrice di interi M e un intero k e restituisce un vettore contenente tutte e sole le escursioni delle righe di M con valore maggiore o uguale a k.

    metodo escursione

    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++) {
        int max=v[0];
         if (v[i] > max) {
            max=v[i]; 
        for (int x=0;x<v.length;x++) {
            int min=v[0];
             if (v[x] < min) {
                min=v[x]; 
    return max-min;
    }
    }
    }
    }
    }
    }
    }
    2 metodo

    codice:
    public static int [] filtraEscursioni (int [] [] M,int k) {
    int [] v=new int[M.length];
    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) {
    v[i]=M[i][j]; }
    return v;
    }
    }
    }
    }
    }
    Io l'ho risolto così ma non gira. Suggerimenti?
    Grazie.
    Ultima modifica di toto92; 07-12-2013 a 16:04

  2. #2
    Per carità! L'indentazione, ti prego! Comunque ti commento il codice riga per riga

    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;
    }
    }
    }
    }
    }
    Avrei anche potuto svolgere l'esercizio al posto tuo, ma non ti servirebbe a nulla.
    Prova a correggerlo come ti ho suggerito.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    residenza
    Catanzaro
    Messaggi
    2
    Ho sbagliato a copiare il primo!!! Ho fatto confusione su Netbeans
    Comunque grazie mille ora vedo se escono!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.