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