Pages: [1]   Go Down
Print
Author Topic: Soluzioni esercizi prova in itinere  (Read 1965 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« on: 29-12-2010, 15:52:32 »

Ciao a tutti.
Qualcuno dei pochi che hanno passato la suddetta prova,possono gentilmente scrivere qui sul forum le soluzioni degli esercizi?

Grazie
« Last Edit: 29-12-2010, 16:13:38 by Il Capitano » Logged
mozart
Matricola
*
Offline Offline

Posts: 9


« Reply #1 on: 30-12-2010, 02:43:51 »

Questa è la mia soluzione al primo esercizio :

http://nopaste.info/e17bbe90e9.html

questo è il secondo :

http://nopaste.info/18bdab27c1.html
Logged
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« Reply #2 on: 30-12-2010, 10:02:41 »

Grazie 1000
Logged
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #3 on: 30-12-2010, 21:09:52 »

=S 18 promossi su 157.....
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #4 on: 13-01-2011, 19:10:43 »

Qualcuno sarebbe così gentile nel darmi una mano nell'esercizio con la matrice nella prova in itinere?
Scusate la mia ignoranza ma la differenza che c'è tra questo codice (che è la soluzione giusta) :

public class Prova_1
{
    public static boolean Prova_1(float[][] A, float e)
    {
        int cont=0;
       
        for(int i=0;i<A[0].length;i++)
        {
            for(int j=0;j<A.length;j++)
            {
                for(int z=0;z<A.length;z++)
                {
                    if((Math.abs(A[j]-A[z])<e)&&(j!=z))
                    {
                        cont++;
                        if(cont==2)
                            return true;
                        z=A.length;
                        j=A.length;
                    }
                }
            }
        }
        return false;
    }
}


e questo codice (che invece non mi risulta !!!!) qual'è???

public class Prova_1
{
    public static boolean Prova_1(float[][] A, float e)
    {
        int cont=0;
       
         for( int i=0;i<A.length;i++)
            for( int j=0;j<A[0].length;j++)
                for( int z=0;z<A[0].length;z++)
                    if((Math.abs(A[j]-A[z])<e)&&(j!=z))
          {
                        cont++;
                        if(cont==2)
                            uguali= true;
                        z=A.length;
                        j=A.length;
                    }
                  }
            }
        }
        return false;
    }
}


Siccome io sono abituato ,quando lavoro con le matrici,a scorrere prima le righe e poi le colonne perchè nella prima soluzione (ovvero quella corretta) accade il contrario cioè prima colonne e poi righe?...
Qualcuno sarebbe cosi gentile di scrivere la soluzione giusta scorrendo prima righe e poi colonne?? GRAZIE IN ANTICIPO
Logged
mozart
Matricola
*
Offline Offline

Posts: 9


« Reply #5 on: 14-01-2011, 19:01:45 »

Diciamo che in quello che hai scritto ci sono due errori.
Il primo è che nell'if scrivi A[j] invece di A[j] (è un array bidimensionale).
Il secondo è che lo scopo dell'esercizio è di scrivere un metodo che ritorni true se nell'array sono presenti due colonne in cui occorrono rispettivamente due valori che differiscono per meno di 'e', quindi con il ciclo for più esterno selezioni le righe, i due cicli più interni ti servono a confrontare i valori delle colonne.
Spero di esserti stato utile!!!
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #6 on: 22-01-2011, 01:57:52 »

Occhio che quando scrivete [i] nel testo normale del forum, si attiva da quel punto in poi il CORSIVO ma soprattutto in quel punto SI PERDE  LA [i]! pray testate

Vi invito a correggere i vostri messaggi ...
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
slentini91
Matricola
*
Offline Offline

Posts: 34


« Reply #7 on: 02-02-2011, 08:41:14 »

Per la gioia di tutti quelli che amano i codici commentati , ecco il secondo esercizio di questa prova!
Code:
public String[] Metodo (String[] A)
  {
  String[] B = new String [A.length]; 
  char c=' ';
  int j = 0 , i = 0;

  while(i<A.length)
    {//QUESTO WHILE SCORRE L'ARRAY A
     
      //Imposto vuota la stringa contenuta di posto i nel vettore B
      B[i]=" ";
      //Reset di j
      j=0;
     
      while(j<A[i].length())
        {//QUESTO WHILE SCANNERIZZA LA STRINGA di posto i nell'ARRAY A
         
        //Dico di estrarre il carattere di posto j , di una stringa di posto i contenuta nell'array A 
        c = A[i].charAt(j);
       
        //Controllo
        if((c!='a')&&(c!='e')&&(c!='i')&&(c!='o')&&(c!='u'))
          {
          //Concatenazione 
          B[i]+=c; 
          } 
        //Incremento di j
        j++; 
        }
    //Incremento di i   
    i++;   
    }
   
  return B; 
  }
Logged
slentini91
Matricola
*
Offline Offline

Posts: 34


« Reply #8 on: 02-02-2011, 09:08:27 »

Per tutti quelli che non hanno capito il primo esercizio e che amano i codici commentati !
Ecco il primo esercizio:
Code:
public boolean Metodo(float[][]A,float E)
  {
  //Imposto il contatore uguale a zero ; esso andrà a contare quanti valori trovo nelle colonne dopo la prima 
  int cont = 0;
      for(int c = 0 ; c<A[0].length;c++)//Prima colonna - colonna
        {
          for(int r1 = 0 ; r1<A.length-1; r1++)//Prima colonna - riga di ricerca 1
            {
              for(int r2 = r1 +1 ;r2<A.length;r2++)//Prima colonna - riga di ricerca 2
                {
                  if(Math.abs(A[r1][c]-A[r2][c])<E)
                    {//In questo caso ho già trovato i primi 2 valori in una colonna - Ne restano altri 2 in una seconda colonna
                   
                      for(int k = c+1;k<A[0].length;k++)
                        {
                         cont = 0;//Per ogni colonna resetto il contatore
                        for(int j=0;j<A.length;j++)
                          {
                            /*Controllo con il valore che in precedenza abbiamo trovato nella colonna precedente .
                            Mia Interpretazione:
                            Ricorda che i valori sono uguali .
                            Quello che importa in questo esercizio è trovare due colonne , che contengono ognuna 2 valori uguali
                            la cui differenza in valore assoluto è minore dell'errore E.
                            */
                            if(Math.abs(A[r2][c]-A[j][k])<E)
                              {
                              cont ++; //Se trova un valore che soddisfa la condizione , incrementa il contatore
                              }
                            if(cont==2)
                              {
                               return true;
                              } 
                          } 
                        }
                    }
                }
            }
        }
   
   
  return false; 
  }

Se lo volete provare , ecco il codice completo:
Code:
class EsercizioUno_ProvaUno
{
public static void main(String args[])
  {
  Met m = new Met();
  /*
    Darà true per i due 1 nella prima colonna e i 2 uno nella 3 colonna ,
    in quanto sono 2 valori uguali per per colonna e rispettano la condizione.
  */ 
  float [][] A =
    {
    {1.0F,3.5F,1.0F,3.4F},
    {2.5F,4.7F,1.0F,2.4F},
    {1.0F,5.1F,2.5F,2.8F}
    }; 
  float E = 0.5F;
  boolean verifica;
  verifica = m.Metodo(A,E);
  System.out.println(verifica); 
  }
}

class Met
{
public boolean Metodo(float[][]A,float E)
  {
  //Imposto il contatore uguale a zero ; esso andrà a contare quanti valori trovo nelle colonne dopo la prima 
  int cont = 0;
      for(int c = 0 ; c<A[0].length;c++)//Prima colonna - colonna
        {
          for(int r1 = 0 ; r1<A.length-1; r1++)//Prima colonna - riga di ricerca 1
            {
              for(int r2 = r1 +1 ;r2<A.length;r2++)//Prima colonna - riga di ricerca 2
                {
                  if(Math.abs(A[r1][c]-A[r2][c])<E)
                    {//In questo caso ho già trovato i primi 2 valori in una colonna - Ne restano altri 2 in una seconda colonna
                   
                      for(int k = c+1;k<A[0].length;k++)
                        {
                         cont = 0;//Per ogni colonna resetto il contatore
                        for(int j=0;j<A.length;j++)
                          {
                            /*Controllo con il valore che in precedenza abbiamo trovato nella colonna precedente .
                            Mia Interpretazione:
                            Ricorda che i valori sono uguali .
                            Quello che importa in questo esercizio è trovare due colonne , che contengono ognuna 2 valori uguali
                            la cui differenza in valore assoluto è minore dell'errore E.
                            */
                            if(Math.abs(A[r2][c]-A[j][k])<E)
                              {
                              cont ++; //Se trova un valore che soddisfa la condizione , incrementa il contatore
                              }
                            if(cont==2)
                              {
                               return true;
                              } 
                          } 
                        }
                    }
                }
            }
        }
   
   
  return false; 
  }


 
}
Logged
Pages: [1]   Go Up
Print
Jump to: