Pages: 1 [2]   Go Down
Print
Author Topic: Soluzioni esercizi esame 26/01  (Read 4451 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
ubuntu_90
Matricola
*
Offline Offline

Gender: Male
Posts: 10



« Reply #15 on: 01-02-2010, 18:58:10 »

Posto il testo dell'esame e i miei metodi svolti:

1) Scrivere un metodo che prenda in input una matrice A ed un array B entrambe di byte e un intero n, e restituisca un boolean che indichi se esistono in B almeno n elementi presenti anche in A.

2) Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di Stringhe, due array Row e Pos di byte,
e d un intero c, e restituisca una stringa x ottenuta concatenando in sequenza tutti i caratteri di indice Pos di tutte le stringhe
presenti in S in riga Pow e colonna c.
Se la stringa non esiste si inserisca un '*', se un carattere nonb esiste si inserisca un '?'. Tutti gli indici iniziano da zero.

Es. S={
{"abcd","efghilm","nop"},
{"xyz"},
{"qrs","tuvwxyz","ab","cdefg","hil"},
{"mno","pqrst"}
};

Row={5,2,1,3}; Pos= {5,3,1}; c=1; x= " *ywu*?sq"

                          ---------------------------------------------------------------------------------------

1° Soluzione
Code:

public static boolean trova( byte [] [] A, byte [] B, int n){

int conta=0;

for( int b=0 ; b < B.length ; b++){

for( int r=0 ; r < A.length ; r++)
for ( int c=0; c < A[r].length ; c++)

if(conta < n){

           if( B[b] == A[r][c]){ conta++;}
        }

                                else {System.out.println(conta);  return true;  }

}
return false;

}


2° Soluzione

Code:

public static String output(String [][] S, byte [] Pos, byte [] Row,int c){

String word= new String ();

                for( int a=0; a < Row.length ; a++){

       
if( ( Row[a] > S.length )  || (c >= S[Row[a]].length) ) // controlla se esiste la riga o la colonna
       {
       word+='*';
}
  else {

      for( int p=0; p < Pos.length ;p++)
              {

                 if(S[Row[a]] [c].length() >= Pos[p])
                {   
                             
                   word+= S[Row[a]] [c].charAt(Pos[p]);

                }

                        else{ word+='?'; }
 
}
}
             
} return word;

}

P.s. Il primo metodo è corretto al 100%  ok invece il secondo mi da errore   no
cmq ho totalizzato nella prova 12 + 8 = 20 per poco ma Ammesso..... spero di esservi stato utile 
Logged

Al mondo ci sono solo 10 tipi di persone: chi comprende il sistema binario e chi no!
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #16 on: 01-02-2010, 23:47:40 »


P.s. Il primo metodo è corretto al 100%  ok invece il secondo mi da errore   no
cmq ho totalizzato nella prova 12 + 8 = 20 per poco ma Ammesso..... spero di esservi stato utile 

Nel primo manca il controllo se l'elemento di B è già stato trovato. Perchè se ad esempio hai l'array B={2,4,8,1} e nella matrice A il 2 è ripetuto tre volte, conta verrà incrementato tre volte quando invece dovrebbe essere incrementato una volta solamente.
Nel secondo invece il problema dovrebbe essere qua:
Code:

if( ( Row[a] > S.length )  || (c >= S[Row[a]].length) )
     
Invece di or nella condizione dovresti mettere and. Credo che dovrebbe funzionarti così
Logged
207
Matricola
*
Offline Offline

Posts: 95


« Reply #17 on: 23-02-2010, 17:19:46 »

Rispondo al collega ubuntu_90 circa il suo secondo esercizio:

Code:
public static String concatena(String[][] S,byte[] row,byte[] pos,int c)
{
String x="";

for(int i=0;i<row.length;i++)
{
if((row[i]>S.length-1)||(c>S[row[i]].length-1))
{
x+="*";
}
else
{
for(int z=0;z<pos.length;z++)
{
if(S[row[i]][c].length()-1<pos[z])
{
x+="?";
}
else
{
x+=S[row[i]][c].charAt(pos[z]);
}
}
}
}

return x;

}

Ciao...
« Last Edit: 23-02-2010, 17:25:25 by 207 » Logged
ubuntu_90
Matricola
*
Offline Offline

Gender: Male
Posts: 10



« Reply #18 on: 23-02-2010, 18:04:14 »

Dopo averci sbattuto per un pò  testate lo hai risolto GRAZIE!

Ho provato con il mio codice e funonzia anche, avevo dimenticato di aggiungere " -1 " nelle varie length e di conseguenza mi segnalava errore perché uscivo dall'indice massimo degli array.. testate 

come sempre ti sei dimostrato il mago del java....
Logged

Al mondo ci sono solo 10 tipi di persone: chi comprende il sistema binario e chi no!
Pages: 1 [2]   Go Up
Print
Jump to: