Pages: [1]   Go Down
Print
Author Topic: Es.array  (Read 837 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Meluccio10
Apprendista Forumista
**
Offline Offline

Posts: 108


« on: 18-02-2011, 10:58:08 »

ehi ragazzi mi da errore nell'ultima riga di codice quando eseguo la stampa sapete dirmi cosa sbaglio prease??
Code:
/*
Scrivere un metodo che prenda in input una matrice A ed un array B entrambe di byte ed un intero n,
e restituisca un boolean che indichi se esistono in B almeno n elementi presenti anche in A.
*/

public class Es11Melo
{
public static boolean metodo(byte [][]A, byte []B,int n)
{ int count=0;
n=B.length;
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
for(int x=0;x<B.length;x++)
{
if(A[i][j]==B[x])
count++;
if(count==n)
return true;
}
}
}
return false;
}

public static void main(String []args)
{ int n;
byte []B={8,9,10,9};
byte [][]A={{7,8,9},{2,8,3,4,7,2},{7,4,1,2,5,6,9,8,7}};
System.out.println((n));
}
}
[\CODE]

grazie in anticipo....
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #1 on: 18-02-2011, 11:11:23 »

intanto secondo me stai interpretando male l'esercizio. l'esercizio che se, ad esempio n=10, allora vuole vedere se ci sono almeno 10 elementi in B che sono presenti pure nella matrice. mentre invece tu controlli se tutti gli elementi di B sono presenti in A, che è diverso. quindi dovresti lasciare n intanto col suo valore di input e usare il contatore che dovrà arrivare a essere maggiore o uguale a n, non solo uguale (c'è una sottigliezza, almeno n elementi e non n elementi, quindi implica che tu devi contarlo anche se va oltre n xkè è un risultato accettabile).
l'errore sta nel fatto che nel richiamare il metodo devi scrivere:
Code:
System.out.println(metodo(A,B,n));
il risultato stampato sarà true o false a seconda del valore di ritorno. un altro consiglio: dato che, come detto prima, c'è da controllare che ci siano almeno n elementi e non solo n elementi, nn devi fermare il controllo appena li trovi ma devi lasciarlo andare avanti, quindi l'if che controlla l'obiettivo deve essere messo fuori da tutti i cicli.
Logged

"Che la Forza sia con Te"
Meluccio10
Apprendista Forumista
**
Offline Offline

Posts: 108


« Reply #2 on: 18-02-2011, 11:29:14 »

quindi se nn ho capito male...cosi dovrebbe andare?
Code:
/*
Scrivere un metodo che prenda in input una matrice A ed un array B entrambe di byte ed un intero n,
e restituisca un boolean che indichi se esistono in B almeno n elementi presenti anche in A.
*/

public class Es11Melo
{
public static boolean metodo(byte [][]A, byte []B,int n)
{ int count=0;
if(B.length<n)
return false;
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[0].length;j++)
{
for(int x=0;x<B.length;x++)
{
if(A[i][j]==B[x])
count++;
if(count==n)
return true;
}
}
}
return false;
}

public static void main(String []args)
{ int n=2;
byte []B={8,9,10,5,5};
byte [][]A={{7,3,2,7},{2,3,4,7,2},{7,4,1,2,6,7}};
System.out.println(metodo(A,B,n));
}
}
[\CODE]
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #3 on: 18-02-2011, 12:20:55 »

si questo è già più corretto, e funziona sicuramente se si mette come ipotesi che sia la matrice che l'array abbiano solo elementi distinti, quindi niente ripetizioni nè nell'array nè nella matrice oppure se le ripetizioni esistono solo nell'array...sono un pò scettico sul funzionamento se esistono elementi ripetuti in entrambi, xkè si rischia di avere un esito positivo anche quando nn lo è
Logged

"Che la Forza sia con Te"
Pages: [1]   Go Up
Print
Jump to: