arcotix
Matricola
Offline
Posts: 18
|
 |
« Reply #30 on: 09-04-2009, 16:54:04 » |
|
nel compito nel primo esercizio ho fatto 2 for in + inutili, e nel secondo ho sbagliato le condizioni x determinare l'ultima vocale, poichè ho usato lo stesso indice x tutte e 2 gli array, quando nei 2 array le parole da confrontare possono essere diverse anche se finiscono con la stessa vocale, ad esempio: gatto,topo.
il secondo che hai postato forse non va bene perchè l'esercizio chiede che le colonne abbiano lo stesso carattere comune alla fine della stringa, e nel tuo esercizio se cambi in una stringa il suo carattere finale, e lo cambi nella stringa corrispondende del secondo array(es prima erano "vetro","topo" e io li ho fatti diventare "vetri","topi")il risultato è comunque true ma non dovrebbe essere perchè la 'i' è comune solo a 2 stringhe e non a tutta la colonna...io ci sto impazzendo con quest'esercizio 
|
|
|
Logged
|
|
|
|
dani89
Apprendista Forumista

Offline
Posts: 254
|
 |
« Reply #31 on: 09-04-2009, 17:16:56 » |
|
hai ragione vediamo di risolvere questo problema....
|
|
|
Logged
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #32 on: 21-04-2009, 11:02:48 » |
|
Ragazzi, questa dovrebbe essere la soluzione più efficiente del primo metodo  /*Scrivere un metodo che prenda in input una matrica A di float, e restituisca un boolean che indicihi se la somma degli elementi del perimetro di A è maggiore del massimo in A.*/ class Esercizio1II // PIU' EFFICIENTE { public static boolean metodo (float [][] A) { float somma=0; float max=0; for(int i=0; i<A.length; i++) for(int j=0; j<A.length; j++) { if((i==0) || (i==A.length-1) || (j==0) || (j==A.length-1) ) somma+=A[j]; if(A[j]>max) max=A[j]; } if(somma>max) return true; return false; } public static void main (String [] args) { float [][] A={ {2,1,1,2}, {1,1,1,1}, {1,1,2,1}, {2,1,1,2}}; System.out.println(metodo(A)); } }
|
|
|
Logged
|
|
|
|
dani89
Apprendista Forumista

Offline
Posts: 254
|
 |
« Reply #33 on: 21-04-2009, 11:18:11 » |
|
non puoi prendere a[j] è un array bidimensionale, si deve prendere A[ i ][j], x il resto credo che sia giusto
|
|
« Last Edit: 21-04-2009, 13:39:21 by dani89 »
|
Logged
|
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #35 on: 21-04-2009, 15:59:52 » |
|
A[ i] [j ]
|
|
|
Logged
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #36 on: 21-04-2009, 16:00:30 » |
|
 Si Si... ho sbagliato a scrivere...è A[ i] [j] GRAZIE per la correzione 
|
|
|
Logged
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #37 on: 21-04-2009, 16:44:51 » |
|
Ragazzi, vediamo come possiamo risolvere il secondo  /*Scrivere un metodo che prenda in input due array bidimensionali di stringhe frastagliati S ed S1 identici nella struttura, e restituisca un indice j che indichi se entrambe le colonne j-esime di S ed S1 (anche non complete) sono tali che tutte le stringhe in esse terminano con lo stesso carattere (comune ad entrambe le colonne). Se non esistono tali colonne j= -1.*/
|
|
|
Logged
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #38 on: 28-04-2009, 10:52:16 » |
|
 Ragazzi ho svolto il secondo esercizio della prova d'esame del 7 aprile. Il metodo funziona,solo che non va quando le matrici sono frastagliate..  Ancora non ho capito bene come funzionano le frastagliate....Ecco il codice P.S. qualcuno mi potrebbe spiegare come farlo funzionare con le matrici frastagliate..grazie /*Scrivere un metodo che prenda in input due array bidimensionali di stringhe frastagliati S ed S1 identici nella struttura, e restituisca un indice h=1 che indichi se entrambe le colonne j-esime di S ed S1 (anche non complete) sono tali che tutte le stringhe in esse terminano con lo stesso carattere (comune ad entrambe le colonne). Se non esistono tali colonne h= -1.*/
class Esercizio2 { public static int metodo (String[][] S,String[][]S1) { int h=-1; int j=0; int cont=1; for(int i=0; i<S[0].length; i++) { for(int k=j+1; k<S.length; k++) { if((S[j].charAt(S[j].length()-1)==S[k].charAt(S[k].length()-1)) &&(S[k].charAt(S[k].length()-1)==S1[j].charAt(S1[j].length()-1)) &&(S1[j].charAt(S1[j].length()-1)==S1[k].charAt(S1[k].length()-1))) cont++; } if(cont==S.length) h=1; cont=1; } return h; } public static void main(String [] args) { String [][]S = {{ "aba" , "defs"} , { "lmc" , "ops"} , { "rsc" , "uvs"} , { "jkc" , "aassss"}, { "dsi" , "dass"}}; String [][]S1 = {{ "abc" , "des"} , { "lmc" , "ops"} , { "rsc" , "uvs"} , { "jkc" , "assss"}, { "cis" , "dars"}}; System.out.println (metodo (S,S1)); } }
|
|
|
Logged
|
|
|
|
pippo
Apprendista Forumista

Offline
Posts: 150
|
 |
« Reply #39 on: 28-04-2009, 10:54:35 » |
|
/*Scrivere un metodo che prenda in input due array bidimensionali di stringhe frastagliati S ed S1 identici nella struttura, e restituisca un indice h=1 che indichi se entrambe le colonne j-esime di S ed S1 (anche non complete) sono tali che tutte le stringhe in esse terminano con lo stesso carattere (comune ad entrambe le colonne). Se non esistono tali colonne h= -1.*/
class Esercizio2 { public static int metodo (String[][] S,String[][]S1) { int h=-1; int j=0; int cont=1; for(int i=0; i<S[0].length; i++) { for(int k=j+1; k<S.length; k++) { if((S[j] [ i].charAt(S[j] [ i].length()-1)==S[k] [ i].charAt(S[k] [ i].length()-1)) &&(S[k] [ i].charAt(S[k] [ i].length()-1)==S1[j] [ i].charAt(S1[j] [ i].length()-1)) &&(S1[j] [ i].charAt(S1[j] [ i].length()-1)==S1[k] [ i].charAt(S1[k] [ i].length()-1))) cont++; } if(cont==S.length) h=1; cont=1; } return h; } public static void main(String [] args) { String [][]S = {{ "aba" , "defs"} , { "lmc" , "ops"} , { "rsc" , "uvs"} , { "jkc" , "aassss"}, { "dsi" , "dass"}}; String [][]S1 = {{ "abc" , "des"} , { "lmc" , "ops"} , { "rsc" , "uvs"} , { "jkc" , "assss"}, { "cis" , "dars"}}; System.out.println (metodo (S,S1)); }
|
|
« Last Edit: 29-04-2009, 10:48:08 by pippo »
|
Logged
|
|
|
|
|
djjeck
Matricola
Offline
Gender: 
Posts: 89
Ho una donna nuda per avatar. Non c'era di meglio.
|
 |
« Reply #41 on: 28-04-2009, 15:38:24 » |
|
ragazzi nel primo if qui compare solo un indice(manca l'indice i), invece ci sono naturalmente 2 indici;  E aggiustalo. Comunque il tuo problema è che utilizzi la lunghezza della prima riga come riferimento per il numero di colonne. Dai un'occhiata al mio metodo findMaxWidth(String[][]) : int Secondo me questo esercizio è troppo complicato. Io lo risolverei così, più o meno. Una soluzione un po' più ordinata, ma in effetti troppo lunga. /** Scrivere un metodo che prenda in input due array bidimensionali di stringhe frastagliati S ed S1 identici nella struttura, e restituisca un indice j che indichi se entrambe le colonne j-esime di S ed S1 (anche non complete) sono tali che tutte le stringhe in esse terminano con lo stesso carattere (comune ad entrambe le colonne). Se non esistono tali colonne j= -1. */ public static int findColumns(String[][] S,String[][] S1){ //trovo il numero di colone (anche incomplete) dell'array frastagliato int width=findMaxWidth(S); //per ogni colonna for(int i=0;i<width;i++) // se in questa colonna esiste un carattere unico di fine stringa if(getColumnsLastChar(S,i)!=null) // e se questo carattere è lo stesso anche per l'altro array if(getColumnsLastChar(S,i)==getColumnsLastChar(S1,i)) // restituisco l'indice della colonna return i; // se nessuna colonna corrisponde alla descrizione, restituisco -1 return -1; }
/** * Trova il numero di colonne di un array bidimensionale di stringhe. */ private static int findMaxWidth(String[][] S){ int max=0; for(int r=0;r<S.length;r++) max=Math.max(S[r].length,max); return max; }
/** * Se nella colonna column della matrice A tutte le stringhe terminano con lo stesso carattere, quel carattere viene restituito. Altrimenti viene restituito null. */ private static Character getColumnsLastChar(String[][] A,int column){ Character c=null; for(int r=0;r<A.length;r++) // se la colonna possiede l'elemento r-esimo if(column<A[r].length){ // se non ho ancora trovato nessun carattere if(c==null) // memorizzo in c il primo carattere della colonna c=getLastChar(A[r][column]); // altrimenti, se ho già trovato un carattere, lo confronto con il successivo. // se sono diversi, la colonna non possiede un unico carattere terminale di stringa else if(getLastChar(A[r][column])!=c) // e quindi restituisco null return null; } // arrivati a questo punto, il carattere c è comune alla fine di tutte le stringhe return c; } /** * Restituisce l'ultimo carattere della stringa s. */ private static char getLastChar(String s){ return s.charAt(s.length()-1); }
|
|
|
Logged
|
|
|
|
|