Pages: [1]   Go Down
Print
Author Topic: aiuto  (Read 903 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
dawid
Matricola
*
Offline Offline

Posts: 27


« on: 12-01-2012, 16:57:35 »

ho scritto questi 2 programmi riesco a compilare ma non vanno

questo dovrebbe prendere in input 2 array e cercare colonne uguali...
Code:
public class colonna
{
public static boolean controllo(double[][] array1, double[][] array2)
{
int righe =array1.length;

int colonne =array1[0].length;
boolean trovato;
trovato= false;
for(int i=0;i<=colonne;i++)
{
         for(int j=0;j<=righe;j++)
{
for(int n=0; n<=colonne;n++)
{
for(int m =0; m<=righe;m++ )
{
if(array1[j][i]-array2[m][n]==0)
{
if(m==righe)
{
trovato= true;
         i=colonne+1;
}
}
else break;
}
}
}
}
return trovato;
}
public static void main(String[] args)
{
double[][] array1= {
{1,2,3,4,5,6},
{2,5,7,8,8,1},
{3,3,3,3,3,3},
{5,5,5,5,5,5},
{4,5,4,5,6,6},
};
double array2 [][] = {
{4,4,4,4,4,6},
{4,7,4,7,4,1},
{5,5,5,5,5,3},
{5,5,5,5,5,5},
{7,7,7,7,7,6},
};
       
        controllo( array1,array2);

}
}

questo dovrebbe cercare stringhe inverse in un matrice ma stesso problema durante l esecuzione riuscite a spiegarmi??
Code:
public class inverso
{

public static boolean ricerca(String[][] primo )
{
int colonna = primo[0].length;
int riga = primo.length;
boolean trovato;
trovato=false;
int lunghezza1;
int lunghezza2;
int c=0;

for(int i=0; i<=colonna;i++)
{
for(int j=0; j<=riga;j++)
{
for(int n=0; n<=colonna;n++)
{
for( int m=0; m<=riga;m++)
{
if(m!=j || n!=i)
{

int a=0;
int b=primo[m][n].length()-1;
while(a<primo[m][n].length())
{
if(primo[j][i].charAt(a)==primo[m][n].charAt(b))
c++;
a++;
b--;
if(c==primo[m][n].length())
trovato=true;
c=0;
}
}
}
}
}
}

return trovato;
}

public static void main(String[] args)
{
String[][] parole={
{"cane" , "pane"},
{"ciao" , "enac"}
};
ricerca(parole);
}
}
Logged
VanDir
Matricola
*
Offline Offline

Posts: 68


« Reply #1 on: 12-01-2012, 17:17:24 »

Potresti cercare di non usare il break, ma semplicemente potresti aggiungere alla condizione dei for una variabile booleana(questo per un codice meno ambiguo). A proposito, occhio alla condizione dei cicli for che devono essere strettamente minori e non minori o uguali alle variabili righe e colonne(credo sia solo questo il vero errore).

PS. sto modificando il messaggio perchè non avevo visto che gli array sono 2.
« Last Edit: 12-01-2012, 17:32:40 by VanDir » Logged
dawid
Matricola
*
Offline Offline

Posts: 27


« Reply #2 on: 12-01-2012, 17:30:08 »

ok il primo funziona  grazie
« Last Edit: 12-01-2012, 17:41:22 by dawid » Logged
VanDir
Matricola
*
Offline Offline

Posts: 68


« Reply #3 on: 12-01-2012, 17:33:36 »

Il primo l'ho scritto sopra, il secondo ora lo guardo e poi modifico questo post.  ok

EDIT:
Stessa cosa per il secondo.  
Sempre per pulire un po' il codice, nel secondo, invece di fare return trovato fai direttamente return true e return false, togli le variabili righe e colonne e scrivi il loro valore direttamente nel ciclo(questo vale anche per il primo), cerca di scrivere il codice con meno variabili.  

« Last Edit: 12-01-2012, 17:44:58 by VanDir » Logged
dawid
Matricola
*
Offline Offline

Posts: 27


« Reply #4 on: 12-01-2012, 17:47:32 »

il secondo levando l = torna false....
Logged
VanDir
Matricola
*
Offline Offline

Posts: 68


« Reply #5 on: 12-01-2012, 17:54:31 »

il secondo levando l = torna false....

E allora ci sarà qualche altro problema, l'importante è che adesso almeno il programma lo esegue. Prova a vedere se hai fatto qualche altro errore di semantica se proprio non riesci a trovarlo scrivi qui che provo a darti una mano.. 
EDIT: ho trovato l'errore(non leggerlo se vuoi capirlo da solo)





c = 0 è messa nel posto sbagliato, mettilo appena dopo il ciclo while.
« Last Edit: 12-01-2012, 18:10:30 by VanDir » Logged
dawid
Matricola
*
Offline Offline

Posts: 27


« Reply #6 on: 12-01-2012, 18:12:02 »

grazie mille ke sbadato ke sono devo scrivere piu ordinato   
Logged
Pages: [1]   Go Up
Print
Jump to: