Pages: 1 2 3 [4]   Go Down
Print
Author Topic: Esercizio array Frastagliati  (Read 6543 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #45 on: 01-02-2011, 10:52:49 »

Buon dì! Vi posto un esercizio che risulta senza problemi solo che ho un piccolo dubbio  cool

Code:
/*Scrivere un metodo che prenda in input una scacchiera quadrata A, e restituisca il numero di salti
che una palla pazza effettua sulla scacchiera partendo dalla posizione in alto a sinistra, applicando
la seguente regola. Se la palla si trova nella posizione (i,j)e A[i][j]>5, allora la palla salterà in una
posizione casuale nella stessa riga; se A[i][j]<5, allora la palla salterà in una posizione casuale
nella stessa colonna. La palla termina di saltare se A[i][j]=5. Non è possibile utilizzare “return”
all’interno di cicli. */
public class Esfrastagliato27
{
public static void main (String []args)
{
int [][] A = {{7,9,3,7},
 {2,6,6,8},
 {5,6,3,8}};
 
 
System.out.println (Es(A));

}

public static String Es (int [][] A)
{
String risultato="";
int r=0;
int c=0;
int salti=0;
int palla=0;

while(palla!=5)
{
palla= A[r][c];
if(palla>5)
{
c=((int)(Math.random()*A.length));
System.out.println(A[r][c]);
palla=A[r][c];
salti++;
}
else
{
r=((int)(Math.random()*A.length));
System.out.println(A[r][c]);
palla=A[r][c];
salti++;
}

if (palla==5)
{
risultato=" La palla ha fatto "+salti+ " "+"salti";   -----> Ho Fatto diverse prove fino ad
                                                
                                                 aggiungere il terzo "+" e diverse virgolette x farlo funzionare! ma non ho capito
                                                  perchè ci vuole! In teoria non dovrebbe bastare: "La palla ha fatto"+salti+"salti";
                                                  non capisco il motivo xD
}
}
return risultato;
}
}

Code:
if (palla==5)
{
risultato=" La palla ha fatto "+salti+ " "+"salti";   -----> Ho Fatto diverse prove fino ad
                                               
                                                 aggiungere il terzo "+" e diverse virgolette x farlo funzionare! ma non ho capito
                                                  perchè ci vuole! In teoria non dovrebbe bastare: "La palla ha fatto"+salti+"salti";
                                                  non capisco il motivo xD
« Last Edit: 01-02-2011, 11:51:29 by locked » Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #46 on: 01-02-2011, 11:52:18 »

tecnicamente è sbagliato il return. xkè devi restituire i salti, il numero, non una stringa dove c'è scritto che sn stati fatti "tot" salti. quindi si presuppone che quando viene invocato, al chiamante interessa il numero per fare delle operazioni o chissà che.. per il resto è corretto. io quando l'avevo fatto mi muovevo anche senza la variabile palla ma semplicemente controllando il contenuto.
Logged

"Che la Forza sia con Te"
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #47 on: 01-02-2011, 12:13:06 »

era solo x renderlo + leggibile! con una return di un int non dava nessun problema! ok
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #48 on: 01-02-2011, 12:45:20 »

visto con cosa abbiamo a che fare all'esame, la pignoleria non è mai troppa 
Logged

"Che la Forza sia con Te"
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #49 on: 01-02-2011, 12:54:53 »

essì! io ormai sto impazzendo dietro decine di esercizi xD

te ne posto altri 2 belli belli! ti scrivo anke dove penso ci sia l'errore ma non capisco come correggerlo -.-

Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe, e
restituisca un boolean che indichi se esiste una stringa in S con i primi due caratteri uguali e
contemporaneamente con gli ultimi due caratteri uguali (primo ed ultimo possono differire). */
public class EsFrastagliato34
{
public static void main (String [] args)
{
String [][] A = {{"ciao","salmone"},
                    {"tuma","monitor","desktop"},
    {"bottigliabo","telecomando"}};

System.out.println(Es(A));
   
}

public static boolean Es(String [][] A)
{
boolean trovato=false;

for(int r=0; r<A.length; r++)
{
for (int c=0; c<A[r].length; c++)
{
if ((A[r][c].substring(0,2)) == (A[r][c].substring(A[r][c].length()-2,A[r][c].length())))
{

trovato=true;
}
}
}
return trovato;
}
}
qui l'errore suppongo sia nell'if visto che non ci entra mai e quindi mi sa che non ho be capito come usa il substring xD

Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe, e
restituisca un boolean che indichi se esiste una riga di S contenente due stringhe che terminano con
la stessa coppia di caratteri.
*/
public class Esfrastagliato36B
{
public static void main (String[]args)
{
String [][] A = {{"ciao","salmone"},
                     {"tumbo","monitor","desktopbo"},
     {"bottigli","telecoman"}};

System.out.println(Es(A));
}

public static boolean Es (String [][] A)
{
boolean trovato = false;

for (int r=0; r<A.length; r++)
{
for (int c=0; c<A[r].length; c++)
{
for (int cc=c+1; cc<A[r].length; cc++)
{
if ((A[r][c].substring(A[r][c].length()-2,A[r][c].length()))==(A[r][cc].substring(A[r][cc].length()-2,A[r][cc].length())))
{
trovato = true;
}
}
}
}
return trovato;
}
}

anche qui l'errore sta nell 'if perchè non ci entra mai...eppure ci sono 2 stringhe con la stessa coppia di caratteri
uguali nella stessa riga... dove sta l'inghippo?  boh
« Last Edit: 01-02-2011, 16:55:32 by locked » Logged
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #50 on: 02-02-2011, 10:45:56 »

up!  ciao
Logged
Impact
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 107



« Reply #51 on: 02-02-2011, 12:30:23 »

Ecco qua la mia soluzione:

Code:
/*
Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe, e
restituisca un boolean che indichi se esiste una riga di S contenente due stringhe che terminano con
la stessa coppia di caratteri.
*/
public class Esfrastagliato36B
{
public static void main (String[]args)
{
String [][] A = {{"ciao","salmone"},{"tumbo","monitor","desktopbo"},{"bottigli","telecoman"}};
boolean output = metodo(A);
System.out.println(output);
}

public static boolean metodo (String [][] A)
{
for (int i=0;i<A.length;i++)
{
for (int j=0;j<A[i].length;j++)
{
for (int l=j+1;l<A[i].length;l++)
{
if (A[i][j].substring(A[i][j].length()-2,A[i][j].length()).equals(A[i][l].substring(A[i][l].length()-2,A[i][l].length())))
return true;
}
}
}
return false;
}
}
Logged
Impact
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 107



« Reply #52 on: 02-02-2011, 12:33:03 »

Stai confrontando due sottostringhe... quindi devi usare il metodo equals e non i due == in quanto senò ti da errore.
Logged
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #53 on: 02-02-2011, 12:41:32 »

ahahaa mannaggia hai ragione xD ecco a cosa serve l'equals   I

Stavo impazzendo xkè era scritto x forza giusto quindi non capivo! grazie x l'illuminazione  ok
Logged
Impact
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 107



« Reply #54 on: 02-02-2011, 12:47:09 »

Per quanto riguarda il primo esercizio, il testo dice di trovare una stringa con i primi due caratteri uguali e con gli ultimi due uguali.. primo e ultimo possono differire.. Nel tuo caso restituisce false perchè: "bottigliabo" non rispetta ciò che dice il testo. Due caratteri uguali iniziali e due uguali finali.. quindi può essere qualcosa del tipo: "bbottigliabb" oppure "bbottigliaa" ecc...
Logged
locked
Matricola
*
Offline Offline

Posts: 26


« Reply #55 on: 02-02-2011, 12:50:55 »

no no con l'equals funziona anche quello  yoh

In pratica penso che utilizzando l'equals lui confronta semplicemente la coppia che io gli dico e la vede uguale anche se il primo e l'ultimo differiscono lui si sofferma su 2 caratteri insieme e quindi funziona xD

i due esercizi sono identici con la differenza che nel primo devo fare il controllo nella stessa stringa nel secondo devo controllare 2 stringhe diverse ma il tipo di codice è identico xD
« Last Edit: 02-02-2011, 12:52:37 by locked » Logged
Pages: 1 2 3 [4]   Go Up
Print
Jump to: