Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Gam on 21-01-2009, 18:34:07



Title: Esercizio esame del 9 gennaio
Post by: Gam on 21-01-2009, 18:34:07
Scrivere un metodo che prenda in input una matrice A di stringhe, e restituisca un boolean che indichi se esistono 3 colonne uguali. Non è possibile usare il metodo equals.

URGENTISSIMO!!! CERCASI SOLUZIONE ESATTA DEL PROBLEMA
GRAZIE :"-(


Title: Re:Esercizio esame del 9 gennaio
Post by: carmelo_ct on 21-01-2009, 18:41:23
Scrivere un metodo che prenda in input una matrice A di stringhe, e restituisca un boolean che indichi se esistono 3 colonne uguali. Non è possibile usare il metodo equals.

URGENTISSIMO!!! CERCASI SOLUZIONE ESATTA DEL PROBLEMA
GRAZIE :"-(

 .quoto .quoto .quoto


Title: Re:Esercizio esame del 9 gennaio
Post by: Vivynz on 21-01-2009, 18:47:38
 .quoto .quoto .quoto
specifico che il prof avrebbe voluto che si usasse il charAt e non il compareTo quindi la soluzione possibilmente con il charAt  :[Emoticon] Asd:
che ne pensate di questo codice????fatemi sapere  :-K
Code:
public static boolean treColUguali(String[][] A)
{
int r=A.length;
int c=A[0].length;
for(int c1=0;c1<c-2;c1++)
for(int c2=c1+1;c2<c-1;c2++)
for(int c3=c2+1;c3<c;c3++)
{
int cont=0;
for(int r1=0;r1<r;r1++)
{
if(A[r1][c1].length()==A[r1][c2].length()&&A[r1][c1].length()==A[r1][c3].length())
{
int ch=0;
for(int k=0;k<A[r1][c1].length();k++)
if(A[r1][c1].charAt(k)==A[r1][c2].charAt(k)&&A[r1][c1].charAt(k)==A[r1][c3].charAt(k))
ch++;
if(ch==A[r1][c1].length())
cont++;
}
}
if(cont==A.length)
return true;
}
return false;
}


Title: Re:Esercizio esame del 9 gennaio
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 22-01-2009, 00:34:31
che ne pensate di questo codice????fatemi sapere  :-K [...]
Nel tuo codice è possibile che venga sollevata una java.lang.ArrayIndexOutOfBoundsException (http://java.sun.com/javase/6/docs/api/java/lang/ArrayIndexOutOfBoundsException.html) che andrebbe opportunamente gestita (o ancora meglio "evitata").

Per il resto il codice è corretto.
Ovviamente ci sono ottimizzazioni possibili, come evitare di controllare i caratteri successivi ai primi due eventualmente trovati diversi in una stessa stringa, oppure anche di evitare di controllare le tre stringhe di una riga successiva qualora la precedente non avesse tre stringhe della stessa lunghezza o se cont nel for che controlla le righe fosse minore dell'indice r1 relativo (da mettere come condizione appunto di tale ciclo for).

 .ciaociao