Pages: 1 2 [3]   Go Down
Print
Author Topic: PRIMA SOLUZIONE ALL'ESAME DI OGGI  (Read 8124 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
arcotix
Matricola
*
Offline 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 Offline

Posts: 254



« Reply #31 on: 09-04-2009, 17:16:56 »

hai ragione vediamo di risolvere questo problema....
Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #32 on: 21-04-2009, 11:02:48 »

Ragazzi, questa dovrebbe essere la soluzione più efficiente del primo metodo I
Quote
/*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 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 Offline

Posts: 150



« Reply #34 on: 21-04-2009, 15:59:21 »

 testate testate Si Si... ho sbagliato a scrivere...è A[j]
GRAZIE per  la correzione ciao
Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #35 on: 21-04-2009, 15:59:52 »

A[ i] [j ]
Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #36 on: 21-04-2009, 16:00:30 »

 testate   Si Si... ho sbagliato a scrivere...è A[ i] [j]
GRAZIE per  la correzione ciao
Logged
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #37 on: 21-04-2009, 16:44:51 »

Ragazzi, vediamo come possiamo risolvere il secondo testate
Quote
/*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 Offline

Posts: 150



« Reply #38 on: 28-04-2009, 10:52:16 »

 ciao 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.. testate 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
Quote

/*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 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
pippo
Apprendista Forumista
**
Offline Offline

Posts: 150



« Reply #40 on: 28-04-2009, 10:58:38 »

 ciao
« Last Edit: 29-04-2009, 10:48:32 by pippo » Logged
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« 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;  ciao
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.
Code:
/** 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
Pages: 1 2 [3]   Go Up
Print
Jump to: