Programma su netbins

di il
4 risposte

Programma su netbins

Salve, sono alle prime armi con NetBeans(e Java) e la programmazione in generale! Per l'esame universitario avevo questo esercizio di preparazione ma non riesco davvero a concluderlo.

"Scrivere 3 metodi :

- ordinato_crescente che ha come parametro un array e restituisce true se e solo se l'array è ordinato in modo crescente
- search che ha come parametro un intero e un array e restituisce true se e solo se l'intero è presente l'array
- bsearch che funziona come search solo che sfrutta il fatto che sicuramente l'array è ordinato in modo crescente

il programma l'ho scritto cosi:
import java.io.*;

public class test_cerca {
    public static void main (String [] Args)  throws IOException {
        DataInputStream c= new DataInputStream(System.in);
        String s;
        int [] x;
        int y;
        System.out.print("inserisci lunghezza sequenza: ");
        s=c.readLine();
        x=new int[Integer.parseInt(s)];
        System.out.println("inserisci "+x.length+" numeri");
        for(int i=0;i<x.length;i=i+1)
        {
            System.out.print("inserisci l'elemento in posizione " +i+": " );
            s=c.readLine();
            x[i]=Integer.parseInt(s); //assegna ad ogni i il valore inserito
            System.out.println("");
        }
        
        System.out.print("quale intero cerchi? ");
        c.readLine();
        y=Integer.parseInt(s);
        
        if(ordinato_crescente(x))
        {
            System.out.println("l'array è ordinato");
        }
        else
        { System.out.println("l'array non è ordinato");
        }
        
    
        if(search(y,x))
        { System.out.println("l'intero immesso esiste nell'array");
        }
        else
        {
         System.out.println("l'intero immesso non esiste nell'array");   
        }    
       
        
        if(bsearch(x,y))
        {
            System.out.println("l'intero immesso esiste nell'array crescente");
        }
         else
        {
         System.out.println("l'intero immesso non esiste nell'array");   
        }    
        
        
        
    }
    
    
    
    
    
    public static boolean ordinato_crescente(int[]f)
    {
        boolean crescente=true;
        for(int i=1;i<f.length;i=i+1)
        {
            if(f[i-1]>f[i])
                
            {crescente=false;}
            
        }
        return crescente;
        
    }
    
    public static boolean search(int m,int[] f)
    { boolean intero=false;
    for(int i=0;i<f.length;i++)
    {if(f[i]==m)
    {intero=true;
    }
    }
    return intero;
    }
    
    public static boolean bsearch(int []f, int m)
    { boolean intord=false;
    for(int i=1;i<f.length && m>=f[i];i++)
    {if(f[i]==m)
    {intord=true; 
    }
    }
    return intord;
    }
    } 


il metodo "ordinato_crescente" funziona e in output stampa correttamente a seconda se l'array è ordinato crescente oppure no!

Invece gli altri due metodi non funzionano, o meglio stampano sempre che l'array contiene l'intero anche se ciò non è vero!

ora non capisco se siano sbagliati i metodi oppure la "stampa" nel main. Personalmente ho "testato" che il main è come se non leggesse i due if del search e del bsearch però non so come risolverle.

qualcuno gentilmente riesce a darmi una mano?

grazie

4 Risposte

  • Re: Programma su netbins

    DEVI usare il pulsante [</>] per FORMATTARE il codice, altrimenti non si capisce niente.
  • Re: Programma su netbins

    Come si esegue questa procedura?


    P.S. sono riuscito a inserire il codice. Spero che adesso vada bene il messaggio.
  • Re: Programma su netbins

    aletzunny ha scritto:


    
            System.out.print("quale intero cerchi? ");
            c.readLine();
            y=Integer.parseInt(s);
    
    qui hai dimenticato la "s":
    
            System.out.print("quale intero cerchi? ");
            s =   c.readLine();    <<<<--------------
            y=Integer.parseInt(s);
    
    in "y" ci finiva sempre l'ultimo intero immesso nella sequenza.

    Per il resto, non ho capito l'ultimo punto. Non è che volevano un algoritmo di ricerca binaria? "B"search, se è cosi, un array non ordinato, lo ordini con Arrays.sort(f) e poi implementi l'algoritmo di ricerca.

    cosi fatto, correggendo la readLine(), il bsearch a volte funziona a volte no se l'array non è ardonato
  • Re: Programma su netbins

    Grazie! Almeno l'errore l'ho trovato!

    Onestamente ho copiato proprio così la richiesta del mio professore! Non so cosa intendesse con bsearch!
    Appunto per ovviare a quel problema a bsearch ho fatto stampare solo vero o falso, che non è bellissimo esteticamente ma funziona
Devi accedere o registrarti per scrivere nel forum
4 risposte