Pages: [1]   Go Down
Print
Author Topic: Esercizio  (Read 1479 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« on: 22-01-2009, 15:58:13 »

Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata di stringhe S e restituisca un boolean che indichi se esiste una colonna in S contenente due stringhe uguali (saltare le eventuali stringhe mancanti)
Qualcuno potrebbe postare la soluzione?
Logged
hax
Matricola
*
Offline Offline

Posts: 64


« Reply #1 on: 22-01-2009, 16:34:26 »

ma saltare le stringhe mancanti in che senso?
Logged
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #2 on: 22-01-2009, 16:38:08 »

In questo senso:
Code:
String A[][]={ {"questa","..è..","una"},
                       {"prova"},
                       {"..di","un","esercizio"} }; 
In questo caso dovrei controllare per esempio che "..è.." e "un" siano uguali (in questo caso non lo sono), senza considerare che manca una stringa  tra le due... e così via per le altre
Logged
hax
Matricola
*
Offline Offline

Posts: 64


« Reply #3 on: 22-01-2009, 17:06:39 »

Code:
import java.util.*;

public class inputMatrice {

    public static void main (String args[]) {
        String A[][]={ {"questa","..è..","una"},
                       {"prova"},
                       {"..di","..fd.","esercizio"} };
System.out.println(ris(A));
    }

public static boolean ris(String[][] S){
int lunghezzamax=0;

//Calcola lunghezza massima delle colonne
for (int i=0;i<S.length;i++)
if (lunghezzamax<S[i].length)
lunghezzamax=S[i].length;

for (int j=0;j<lunghezzamax;j++) //scorre colonne
for (int i=0;i<S.length;i++) //scorre righe
if (j<S[i].length) //entri nel ciclo solo se l'elemento di posto i esiste
for (int k=i+1;k<S.length;k++) //scorre le righe del sottovettore di colonna j
if (j<S[k].length) //confronti solo se esiste pure l'elemento di posto k
if (S[i][j].equals(S[k][j]))
return true;
return false;
}
}
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #4 on: 22-01-2009, 18:40:26 »

perchè non mi stampa la matrice?
questo è il testo:
Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe ed un
byte j, e restituisca una matrice S’ copia di S in cui in ogni stringa della colonna j-esima ogni
occorrenza del carattere ‘g’ è sostituita da un carattere ‘*’.
e questo il codice:
Code:
class venti{
public static String[][] venti(String[][]a,int p)
{
String [][]b=new String[a.length][];
for(int i=0;i<a.length;i++)//inizializzo la matrice frastagliata con stringhe nulle
{
b[i]=new String[a[i].length];
for( int j=0;j<a[i].length;j++)
{
b[i][j]="";
}
}
for(int i=0;i<a.length;i++)
{
for (int j=0;j<a[i].length;j++)
{
if( p>a[i].length-1)
{
System.out.println("non esiste la colonna !!");
         break;
}

for (int k=0;k<a[p][i].length()-1;k++)
{
if(a[p][i].charAt(k)=='g')
{b[i][j]=a[i][j];
b[j][i]=a[j][i].replace('g','*');
System.out.print(b[i][j]);
}
}
}
}return b;
}
}
public class ventesimo
{
public static void main (String args[])
{
String[][]a={{"ciaowwwwwwwwwwaa","comqqqqqqqqqeaa","stxaaaaxai?aa"},
{"iowwwwwwwwwwwwwaa","beyyneaa","eeeeeeeeeeeeeeeaa","tuqqqqqqqqqqqqqqqqqqqq?"},
{"cosa","haxyi","fato","pomexxyriggio","arrrrrrrrrry","lezxyxyione?"}};
 String [][]b=venti.venti(a,2);
 
for(int i=0;i<b.length;i++)
{
for(int j=0;j<b[i].length;j++)
{
System.out.print(b[i][j]+"\t");
}System.out.println("    ");
}
}
}
chi mi sa dire dove sbaglio?
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
hax
Matricola
*
Offline Offline

Posts: 64


« Reply #5 on: 22-01-2009, 19:02:09 »

Code:
if(a[p][i].charAt(k)=='g')
{ b[i][j]=a[i][j];
b[j][i]=a[j][i].replace('g','*');
System.out.print(b[i][j]);
}
assegni alla nuova matrice l'elemento della vecchia solo se l'elemento k è una g? e comunque ogni volta che incontri una g l'assegnamento viene rifatto!  boh
Logged
Pages: [1]   Go Up
Print
Jump to: