Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: atrix0ne on 04-03-2009, 10:57:44



Title: Metodo
Post by: atrix0ne on 04-03-2009, 10:57:44
Un “dizionario” è un array di stringhe ordinato lessicograficamente in senso crescente. Scrivere un
metodo che prenda in input una matrice quadrata S di stringhe ed un dizionario, e restituisca un
nuovo dizionario aggiornato con tutte le stringhe in S.
Si supponga che non esistano stringhe ripetute. Non è possibile utilizzare metodi di ordinamento.

qualcuno mi può dare una mano?non và:
Code:
public class one
  {
  public static String [] metodo(String [][] A,String [] D)
    {
    String [] Output=new String [D.length+A.length*A[0].length];
    int i,r,c=0;
    int j=0;
    for(i=0;i<D.length;i++)
      {
      for(r=0;r<A.length;r++)
        {
        for(c=0;c<A[0].length;c++)
          {
          if(D[i].compareTo(A[r][c])==-1)
            {
            Output[j]=A[r][c];
            A[r][c]="";
            j++;
            }
          }
        }
      Output[j]=D[i];
      }
   return Output;
    }


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 11:50:00
Ci sono riuscito 8-|


Title: Re:Metodo
Post by: zElOtO on 04-03-2009, 11:55:28
 .applausi


Title: Re:Metodo
Post by: Manna on 04-03-2009, 11:59:15
Meglio di marzullo...fatti una domanda e datti una risposta  :[Emoticon] Asd:


Title: Re:Metodo
Post by: zElOtO on 04-03-2009, 13:42:04
Meglio di marzullo...fatti una domanda e datti una risposta  :[Emoticon] Asd:
:"-(



Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 14:09:33
ahahahah  :[Emoticon] PC Asd: 3 ore per rispondere qualcuno,alla fine mi è riuscito .bah


Title: Re:Metodo
Post by: Fr3d3R!K on 04-03-2009, 14:14:53
ahahahah  :[Emoticon] PC Asd: 3 ore per rispondere qualcuno,alla fine mi è riuscito .bah
ho visto ora questo topic però vorrei porti un quesito: non è più soddisfacente riuscire a risolvere un problema con le proprie forze? o perlomeno, per me è così .timido .smile


Title: Re:Metodo
Post by: Vivynz on 04-03-2009, 15:22:24
ahahahah  :[Emoticon] PC Asd: 3 ore per rispondere qualcuno,alla fine mi è riuscito .bah
ho visto ora questo topic però vorrei porti un quesito: non è più soddisfacente riuscire a risolvere un problema con le proprie forze? o perlomeno, per me è così .timido .smile
.quoto
meglio contare sulle proprie forze..dopotutto se ci sei riuscito da solo non avevi bisogno di nessuno e in questo modo l'aver trovato una soluzione solo con il tuo cervello ti sarà molto più utile a risolvere altri esercizi piuttosto che la soluzione data bell'e pronta a qualcun'altro!!!! .wink


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 15:26:45
hai ragione .wink


Title: Re:Metodo
Post by: Valeriodev on 04-03-2009, 16:28:22
Bhe però metti la soluzione magari potrebbe servire a qualcunaltro.

Ciao


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 17:27:26
/*Un dizionario è un array di stringhe ordinato lessicograficamente in senso crescente. Scrivere un
metodo che prenda in input una matrice quadrata S di stringhe ed un dizionario, e restituisca un
nuovo dizionario aggiornato con tutte le stringhe in S.
Si supponga che non esistano stringhe ripetute. Non è possibile utilizzare metodi di ordinamento.*/
Code:
public class duequattro
  {
  public static String [] metodo(String [][] A,String [] D)
    {
    String [] Output=new String [(D.length+A.length*A[0].length)];
    int i,r,c=0;
    int j=0;
    for(i=0;i<D.length;i++)
      {
      for(r=0;r<A.length;r++)
        {
        for(c=0;c<A[0].length;c++)
          {
          if((D[i]).compareTo(A[r][c])>0)
            {
            Output[j]=A[r][c];
            A[r][c]="zz";
            j++;
            }
          }
       
      }
    Output[j]=D[i];
    j++;
       
      }
   return Output;
    }
:-OK


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 17:27:58
ah dimenticavo:qualcuno sà come funziona correttamente il compareTo?


Title: Re:Metodo
Post by: Vivynz on 04-03-2009, 18:43:35
dalla documentazione java,non penso possa essere spiegato meglio  .wink:
compareTo
public int compareTo(String anotherString)Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argument string. The result is a negative integer if this String object lexicographically precedes the argument string. The result is a positive integer if this String object lexicographically follows the argument string. The result is zero if the strings are equal; compareTo returns 0 exactly when the equals(Object) method would return true.
This is the definition of lexicographic ordering. If two strings are different, then either they have different characters at some index that is a valid index for both strings, or their lengths are different, or both. If they have different characters at one or more index positions, let k be the smallest such index; then the string whose character at position k has the smaller value, as determined by using the < operator, lexicographically precedes the other string. In this case, compareTo returns the difference of the two character values at position k in the two string -- that is, the value:

 this.charAt(k)-anotherString.charAt(k)
 If there is no index position at which they differ, then the shorter string lexicographically precedes the longer string. In this case, compareTo returns the difference of the lengths of the strings -- that is, the value:
 this.length()-anotherString.length()
 
Specified by:
compareTo in interface Comparable<String>
Parameters:
anotherString - the String to be compared.
Returns:
the value 0 if the argument string is equal to this string; a value less than 0 if this string is lexicographically less than the string argument; and a value greater than 0 if this string is lexicographically greater than the string argument.


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 20:17:10
nn ho capito solo una cosa,dà numeri negativi oppure -1 in generale se è maggiore la stringa


Title: Re:Metodo
Post by: Vivynz on 04-03-2009, 20:35:20
0 se le stringhe sono uguali
valori negativi se la stringa che richiama il metodo è lessicograficamente minore di quella che il metodo prende come argomento
valori positivi viceversa


Title: Re:Metodo
Post by: atrix0ne on 04-03-2009, 23:31:28
per esempio io ho due stringhe e faccio abaco.compareTo(casa) ke valore dovrebbe dare secondo te?


Title: Re:Metodo
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 04-03-2009, 23:57:25
per esempio io ho due stringhe e faccio abaco.compareTo(casa) ke valore dovrebbe dare secondo te?
Vedi, non è secondo qualcuno che fa qualcosa: è proprio deterministico il valore restituito. È quello e basta, non secondo qualcuno.

In ogni caso, per come hai scritto:
Code:
abaco.compareTo(casa)
potrebbe essere valutato in qualsiasi numero.

Invece, l'espressione:
Code:
"abaco".compareTo("casa")
restituisce sicuramente un valore minore di zero.
(in particolare restituisce il numero 'a'-'c', cioè -2).
 .ciaociao


Title: Re:Metodo
Post by: atrix0ne on 05-03-2009, 01:02:42
invece nel metodo ke ho realizzato non me lo leggeva come negativo ma come maggiore di 0,guarda
Code:
/*Un dizionario è un array di stringhe ordinato lessicograficamente in senso crescente. Scrivere un
metodo che prenda in input una matrice quadrata S di stringhe ed un dizionario, e restituisca un
nuovo dizionario aggiornato con tutte le stringhe in S.
Si supponga che non esistano stringhe ripetute. Non è possibile utilizzare metodi di ordinamento.*/
public class duequattro
  {
  public static String [] metodo(String [][] A,String [] D)
    {
    String [] Output=new String [(D.length+A.length*A[0].length)];
    int i,r,c=0;
    int j=0;
    for(i=0;i<D.length;i++)
      {
      for(r=0;r<A.length;r++)
        {
        for(c=0;c<A[0].length;c++)
          {
          if((D[i]).compareTo(A[r][c])>0)
            {
            Output[j]=A[r][c];
            A[r][c]="zz";
            j++;
            }
          }
       
      }
    Output[j]=D[i];
    j++;
       
      }
   return Output;
    }

    public static void main (String[]args)
  {
    String m[][]= {   {"gioco","ciao","mamma","papa"},
                     {"richi", "palazzo","lollo","ezio"},
                     {"abaco","puppo","pene","vetro"} };
  String [] Dizionario={"casa","minchia","palo","zoccola","zuzzurellone"};
String[] Output=new String[(Dizionario.length+m.length*m[0].length)];   
System.arraycopy(metodo(m,Dizionario),0,Output,0,(Dizionario.length+m.length*m[0].length));
     for(int i=0;i<Output.length;i++)
       {
       System.out.println(Output[i]);
       }
     }
  }


Title: Re:Metodo
Post by: atrix0ne on 05-03-2009, 10:21:44
hai ragione reverse :-)|


Title: Re:Metodo
Post by: Vivynz on 05-03-2009, 10:52:01
 :[Emoticon] Asd: il compilatore non sbaglia(al massimo segue correttamente le nostre istruzuoni sbagliate .smile)....per fortuna!!se ci si mettesse anche lui... :[Emoticon] Asd: :[Emoticon] Asd: :[Emoticon] Asd:


Title: Re:Metodo
Post by: atrix0ne on 05-03-2009, 20:23:00
un main per vedere se funziona questo esercizio??
Code:
/*Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe e
restituisca una matrice S’ ottenuta da S eliminando tutti i caratteri ‘x’ ed ‘y’.*/
public class dieci
  {
  public static String [][] metodo(String [][] S)
    {
    int r,c,k=0;
    String [][] S1=new String [S.length][S[0].length];
    for(r=0;r<S.length;r++)
      {
      for(c=0;c<S[r].length;c++)
        {
        for(k=0;k<S[r][c].length();k++)
        {
        if(S[r][c].charAt(k)=='x' || S[r][c].charAt(k)=='y'){}
         
         else
        S1[r][c]+=S[r][c].charAt(k);
        }
      }
    }
  return S1;
  }
}


Title: Re:Metodo
Post by: Manna on 05-03-2009, 21:23:13
Sembra corretto...prova a compilarlo ma dovrebbe andare


Title: Re:Metodo
Post by: atrix0ne on 05-03-2009, 21:24:02
come lo faccio il main dell'eser? .bah


Title: Re:Metodo
Post by: Manna on 05-03-2009, 21:37:31
Devi dichiarare una matrice e riempirla di caratteri quando la dichiari...è solo noioso come procedimento...poi richiami il metodo e stampi il risultato


Title: Re:Metodo
Post by: ShiShi on 06-04-2009, 08:59:23
/*Un dizionario è un array di stringhe ordinato lessicograficamente in senso crescente. Scrivere un
metodo che prenda in input una matrice quadrata S di stringhe ed un dizionario, e restituisca un
nuovo dizionario aggiornato con tutte le stringhe in S.
Si supponga che non esistano stringhe ripetute. Non è possibile utilizzare metodi di ordinamento.*/
Code:
public class duequattro
  {
  public static String [] metodo(String [][] A,String [] D)
    {
    String [] Output=new String [(D.length+A.length*A[0].length)];
    int i,r,c=0;
    int j=0;
    for(i=0;i<D.length;i++)
      {
      for(r=0;r<A.length;r++)
        {
        for(c=0;c<A[0].length;c++)
          {
          if((D[i]).compareTo(A[r][c])>0)
            {
            Output[j]=A[r][c];
            A[r][c]="zz";
            j++;
            }
          }
       
      }
    Output[j]=D[i];
    j++;
       
      }
   return Output;
    }
:-OK


Sto svolgendo gli esercizi sul Dizionario e spulciando il forum ho trovato questo,mi è venuto un dubbio.
Qui è stato usato compareTo ma nel testo è specificato che non si possono usare metodi di ordinamento. Questo non lo è?E' possibile usarlo nell'esercizio? .huh


Title: Re:Metodo
Post by: atrix0ne on 06-04-2009, 09:55:52
non è di ordinamento  .bah


Title: Re:Metodo
Post by: ShiShi on 06-04-2009, 09:58:58
Ma facilita moltissimo l'esercizio, è possibile lo stesso usarlo?


Title: Re:Metodo
Post by: isuccia89 on 06-04-2009, 10:00:31
Ma facilita moltissimo l'esercizio, è possibile lo stesso usarlo?

se nel testo c'è scritto ke nn si può usare e il prof vieta di usarlo dubito ke quindi si possa fare... anke se facilita l'esercizio


Title: Re:Metodo
Post by: ShiShi on 06-04-2009, 10:04:30
In pratica cosa non posso usare il bubbleSort?


Title: Re:Metodo
Post by: isuccia89 on 06-04-2009, 10:06:53
In pratica cosa non posso usare il bubbleSort?

dipende da quello ke dice il prof... io domani devo fare la prima parte ma mi è stato detto ke negli altri appelli a volte vietava di usare qualke metodo, adesso quale di preciso non lo so, vedremo  :-)|