[bottega] Re:[bottega] Re:[bottega] Re: ti mando l

  • From: "votrusso" <votrusso@xxxxxxxxx>
  • To: "bottega" <bottega@xxxxxxxxxxxxx>
  • Date: Tue, 17 Dec 2002 21:03:23 +0100

> =0D=0A> On Wed, Dec 11, 2002 at 07:58:36PM +0100, votrusso wrote:=0D=0A=
> > Sono Tommaso Russo Massimiliano ti mando l'esercizio che ho fatto par=
e =0D=0A> > che vada bene quardalo e dacci un occhiata confermami che va =
bene e=0D=0A> =0D=0A> Ciao Tommaso, ti rispondo qui cosi` gli altri posso=
no giovarne.=0D=0A> =0D=0A> L'esercizio era di ordinare un elenco di clie=
nti alfabeticamente=0D=0A> secondo il nome.  Ciascun cliente e` rappresen=
tato da un oggetto di=0D=0A> classe Cliente; i clienti sono conservati in=
 un vettore; l'algoritmo=0D=0A> da usare e` l'insertion sort.=0D=0A> =0D=0A=
> Il tuo svolgimento e` corretto, i clienti vengono stampati con i=0D=0A>=
 nomi in ordine alfabetico.  Lo riporto qui sotto per intero, poi lo=0D=0A=
> commento brano a brano suggerendo delle migliorie.=0D=0A> =0D=0A> Ecco =
l'esercizio:=0D=0A> =0D=0A> =0D=0A> import java.util.*;=0D=0A> class Clie=
nte {=0D=0A>    public Cliente(String nome,String cognome) {=0D=0A>             
this.=
nome=3Dnome;=0D=0A>             this.cognome=3Dcognome;=0D=0A>  }=0D=0A>        
public St=
ring nome;=0D=0A>       public String cognome;=0D=0A>   public int compareTo(Cl=
iente cl) {=0D=0A>              if(this.nome.compareTo(cl.nome)>0) {=0D=0A>     
                retur=
n 1;=0D=0A>             } else if(this.nome.compareTo(cl.nome)<0) {=0D=0A>      
                retur=
n -1;=0D=0A>            } else {=0D=0A>                         return 
0;=0D=0A>                }=0D=0A>        }=0D=0A> }=
=0D=0A> public class InsertionSort {=0D=0A>     public static void main(Stri=
ng[] argv)throws Exception {=0D=0A>             Cliente cl1=3Dnew 
Cliente("tommaso"=
,"russo");=0D=0A>               Cliente cl2=3Dnew 
Cliente("marco","miccolupi");=0D=0A=
>               Cliente cl3=3Dnew Cliente("roberto","vicci");=0D=0A>            
> Cliente cl4=3D=
new Cliente("cosimo","rossi");=0D=0A>           Cliente cl5=3Dnew 
Cliente("carmin=
e","izzo");=0D=0A>              Vector v1=3Dnew Vector();=0D=0A>                
v1.addElement(cl1=
);=0D=0A>               v1.addElement(cl2);=0D=0A>              
v1.addElement(cl3);=0D=0A>              v1.=
addElement(cl4);=0D=0A>                 v1.addElement(cl5);=0D=0A>              
Vector v2=3Dnew Ve=
ctor();=0D=0A>          for(int i=3D0;i<v1.size();i++) {=0D=0A>                 
        Cliente cl=3D=
(Cliente)v1.elementAt(i);=0D=0A>                        if(v2.size()=3D=3D0) 
{=0D=0A>                           v2.=
addElement(cl); =0D=0A>                         } else {=0D=0A>                 
                Cliente primocl=3D(Cliente=
)v2.elementAt(0);=0D=0A>                                
if(primocl.compareTo(cl)>0) {=0D=0A>                                    v2=
.insertElementAt(cl,0);=0D=0A>                          } else {=0D=0A>         
                                Cliente ultimocl=3D=
(Cliente)v2.elementAt(v2.size()-1);=0D=0A>                                      
if(ultimocl.compareTo(cl)=
<0) {=0D=0A>                                            
v2.addElement(cl);=0D=0A>                                       } else {=0D=0A> 
                                                f=
or(int j=3D0;j<v2.size()-1;j++) {=0D=0A>                                        
                Cliente sinistrocl=3D(Cli=
ente)v2.elementAt(j);=0D=0A>                                                    
Cliente destrocl=3D(Cliente)v2.elemen=
tAt(j+1);=0D=0A>                                                        
if(sinistrocl.compareTo(cl)<0) {=0D=0A>                                         
                        i=
f(destrocl.compareTo(cl)>0) {=0D=0A>                                            
                        v2.insertElementAt(cl,j+1);=
=0D=0A>                                                                         
break;=0D=0A>                                                           
}=0D=0A>                                                        }=0D=0A>        
                                        }               =
                =0D=0A>                                         }               
        =0D=0A>                                 }=0D=0A>                        
}=0D=0A>                } =0D=0A>               stampa(=
v2);=0D=0A>     }=0D=0A>        public static void stampa(Vector v2) {=0D=0A>   
        Sy=
stem.out.println("Elenco ordinato in base al nome:");=0D=0A>            
System.out=
.println();=0D=0A>              for(int k=3D0;k<v2.size();k++) {=0D=0A>         
                Cliente s=
tampacl=3D(Cliente)v2.elementAt(k);=0D=0A>                      
System.out.println(stampacl=
.nome+" "+stampacl.cognome);=0D=0A>             }=0D=0A>        }=0D=0A> 
}=0D=0A> =0D=0A>=
 =0D=0A> // COMMENTI SULLA CLASSE CLIENTE=0D=0A> =0D=0A> class Cliente {=0D=
=0A>    public Cliente(String nome,String cognome) {=0D=0A>             
this.nome=3Dn=
ome;=0D=0A>             this.cognome=3Dcognome;=0D=0A>  }=0D=0A> =0D=0A>        
// Queste=
 variabili di istanza sono pubbliche.  Cio` puo` essere=0D=0A>  // un pro=
blema, perche' non vogliamo che altri possano modificare=0D=0A>         // nome 
=
e cognome di un cliente.=0D=0A> =0D=0A>         public String nome;=0D=0A>      
publ=
ic String cognome;=0D=0A> =0D=0A>       // Possiamo fare due cose:=0D=0A>       
//=0D=
=0A>    // 1) lasciare le variabili pubbliche, ma dichiararle `final'.=0D=0A=
>       // Cio` significa che, una volta impostate nel costruttore,=0D=0A>      
> //=
 nessuno potra` piu` modificare il loro valore, ne'=0D=0A>      // dall'inter=
no, ne' dall'esterno:=0D=0A> =0D=0A>    public final String nome, cognome;=0D=
=0A> =0D=0A>    // 2) dichiarare la variabili come private, e creare dei me=
todi=0D=0A>     // `lettori' per renderle disponibili all'esterno in sola le=
ttura:=0D=0A> =0D=0A>   private String nome, cognome;=0D=0A> =0D=0A>    publ=
ic String getNome() {=0D=0A>            return nome;=0D=0A>     } =0D=0A> 
=0D=0A>       pu=
blic String getCognome() {=0D=0A>               return cognome;=0D=0A>  } 
=0D=0A> =0D=
=0A>    // Questo metodo serve a comparare due oggetti di classe Cliente=0D=
=0A>    // in base al cognome:=0D=0A>   //=0D=0A>       //     int result =3D 
cli=
ente1.compareTo(cliente2)=0D=0A>        //=0D=0A>       // result e` maggiore, 
minor=
e o uguale a zero, a seconda che il=0D=0A>      // cognome di cliente1 sia ma=
ggiore, minore o uguale a quello del=0D=0A>     // secondo.=0D=0A> =0D=0A>      
=
public int compareTo(Cliente cl) {=0D=0A>               
if(this.nome.compareTo(cl.nom=
e)>0) {=0D=0A>                  return 1;=0D=0A>                } else 
if(this.nome.compareTo(cl.nom=
e)<0) {=0D=0A>                  return -1;=0D=0A>               } else {=0D=0A> 
                        return 0;=0D=0A>=
                }=0D=0A>        }=0D=0A> =0D=0A>        // Da notare che il 
comportamento di compa=
reTo sulle stringhe e`=0D=0A>   // uguale, quindi si sarebbe potuto scrive=
re piu` brevemente:=0D=0A> =0D=0A>      public int compareTo(Cliente c) {=0D=0A=
>               int result =3D nome.compareTo(c.nome);=0D=0A>           return 
> result;=0D=0A>=
        }=0D=0A> =0D=0A>        // O ancora piu` brevemente:=0D=0A> =0D=0A>     
public i=
nt compareTo(Cliente c) {=0D=0A>                return 
nome.compareTo(c.nome);=0D=0A> =
        }=0D=0A> =0D=0A>        // Naturalmente, se invece di variabili di 
istanza ave=
ssimo avuto=0D=0A>      // metodi lettori, avremmo scritto cosi`:=0D=0A> =0D=0A=
>       public int compareTo(Cliente c) {=0D=0A>                return 
> nome.compareTo(c.get=
Nome());=0D=0A>         } =0D=0A> =0D=0A> }=0D=0A> =0D=0A> =0D=0A> // COMMENTI 
S=
ULL'IMPLEMENTAZIONE DELL'INSERTION SORT=0D=0A> =0D=0A> public class Inser=
tionSort {=0D=0A>       public static void main(String[] argv)throws Exception=
 {=0D=0A> =0D=0A>               // Ricordate il selection sort?  Tutto si 
svolgeva in=
 un solo vettore.=0D=0A>                // L'insertion sort e` diverso: c'e` un 
vettor=
e di partenza, non=0D=0A>               // ordinato, e un vettore di 
destinazione, ch=
e viene riempito secondo=0D=0A>                 // un criterio, in modo che, 
alla fine =
dell'operazione, risulti=0D=0A>                 // ordinato.=0D=0A>             
//=0D=0A>               // Al=
la fine del procedimento, il vettore di partenza e` ancora come=0D=0A>          
=
// era all'inizio.=0D=0A>               //=0D=0A>               // Qui creiamo 
e riempiamo il vet=
tore di partenza:=0D=0A>                =0D=0A>                 Cliente 
cl1=3Dnew Cliente("tommaso",=
"russo");=0D=0A>                Cliente cl2=3Dnew 
Cliente("marco","miccolupi");=0D=0A>=
                Cliente cl3=3Dnew Cliente("roberto","vicci");=0D=0A>            
Cliente cl4=3Dn=
ew Cliente("cosimo","rossi");=0D=0A>            Cliente cl5=3Dnew 
Cliente("carmine=
","izzo");=0D=0A>               Vector v1=3Dnew Vector();=0D=0A>                
v1.addElement(cl1)=
;=0D=0A>                v1.addElement(cl2);=0D=0A>              
v1.addElement(cl3);=0D=0A>              v1.a=
ddElement(cl4);=0D=0A>          v1.addElement(cl5);=0D=0A> =0D=0A>              
// Qui crei=
amo il vettore di destinazione...=0D=0A> =0D=0A>                Vector v2=3Dnew 
Vector=
();=0D=0A> =0D=0A>              // ...e lo riempiamo secondo questo 
procedimento:=0D=
=0A> =0D=0A>            // - prendiamo un elemento alla volta dal vettore di 
parte=
nza;=0D=0A> =0D=0A>             for(int i=3D0;i<v1.size();i++) {=0D=0A>         
                Cliente =
cl=3D(Cliente)v1.elementAt(i);=0D=0A> =0D=0A>                   // - se il 
vettore di de=
stinazione e` vuoto, inseriamo=0D=0A>                   // l'elemento appena 
preso, senz=
a troppe cerimonie;=0D=0A> =0D=0A>                      if(v2.size()=3D=3D0) 
{=0D=0A>                           v=
2.addElement(cl); =0D=0A>                       } else {=0D=0A> =0D=0A>         
                        // - altrimenti,=
 se l'elemento appena preso e` minore=0D=0A>                            // del 
primo elemento de=
l vettore, inseriamolo prima=0D=0A>                             // (il primo 
elemento e tutti gli=
 altri slitteranno);=0D=0A>                             =0D=0A>                 
                Cliente primocl=3D(Cliente)v2=
.elementAt(0);=0D=0A>                           if(primocl.compareTo(cl)>0) 
{=0D=0A>                                    v2.in=
sertElementAt(cl,0);=0D=0A>                             } else {=0D=0A>         
                                =0D=0A>                                         
// - al=
trimenti, se l'elemento appena preso e`=0D=0A>                                  
// maggiore dell'ulti=
mo, aggiungiamolo alla fine=0D=0A>                                      =0D=0A> 
                                        Cliente ultimocl=3D(=
Cliente)v2.elementAt(v2.size()-1);=0D=0A>                                       
if(ultimocl.compareTo(cl)<=
0) {=0D=0A>                                             
v2.addElement(cl);=0D=0A>                                       } else {=0D=0A> 
=0D=0A> =
                                                // altrimenti percorriamo tutto 
il vettore di=0D=0A>                                            // desti=
nazione, cercando i due elementi tra i=0D=0A>                                   
        // quali va inserito =
quello appena preso=0D=0A>                                              =0D=0A> 
                                                for(int j=3D0;j<v2.size()-=
1;j++) {=0D=0A>                                                         Cliente 
sinistrocl=3D(Cliente)v2.elementAt(j);=0D=0A=
>                                                       Cliente 
> destrocl=3D(Cliente)v2.elementAt(j+1);=0D=0A>                                 
>                   if(=
sinistrocl.compareTo(cl)<0) {=0D=0A>                                            
                if(destrocl.compareTo(cl)>0)=
 {=0D=0A>                                                                       
v2.insertElementAt(cl,j+1);=0D=0A>                                              
                        break;=0D=0A=
>                                                               }=0D=0A>        
>                                                 }=0D=0A>                      
>                           }                               =0D=0A>             
>                             }                       =0D=0A>                 =
                }=0D=0A>                        }=0D=0A>                } 
=0D=0A> =0D=0A>               // Qui viene stampato il vet=
tore.=0D=0A>            =0D=0A>                 stampa(v2);=0D=0A> =0D=0A>      
        // Un alternativa p=
iu` leggera sarebbe stata:=0D=0A> =0D=0A>               
System.out.println(v2);=0D=0A=
> =0D=0A>               // Cio` pero` sarebbe risultato in qualcosa 
> come:=0D=0A>                //=
=0D=0A>                 //    [Cliente@12523, Cliente@98038, 
Cliente@12310]=0D=0A>              //=
=0D=0A>                 // ...perche' la classe cliente non ridefisce il 
metodo=0D=0A> =
                // toString(), che quindi mantiene il comportamento 
definito=0D=0A>             /=
/ nella superclasse Object.=0D=0A>              =0D=0A>         }=0D=0A> 
=0D=0A> =0D=0A>        p=
ublic static void stampa(Vector v2) {=0D=0A>            
System.out.println("Elenco=
 ordinato in base al nome:");=0D=0A>            System.out.println();=0D=0A>    
        for=
(int k=3D0;k<v2.size();k++) {=0D=0A>                    Cliente 
stampacl=3D(Cliente)v2.el=
ementAt(k);=0D=0A>                      System.out.println(stampacl.nome+" 
"+stampacl.cogno=
me);=0D=0A>             }=0D=0A>        }=0D=0A> }=0D=0A> =0D=0A> 


Vi mando i file che scritto da casa commentati spero siano graditi e utili
Se ci sono problemi segnalatemelo e gradito un suggerimento su come risolverli
(Problemi inerenti alla ricezione della posta e dei file e spiegazioni di come 
ho svolto glie esercizi saluti.
Tommaso Russo 

-- Attached file included as plaintext by Ecartis --
-- File: file1.txt

russo 
tommaso
rosa 
antonio
demezza 
cosimo
iacicco 
luciano
iannace 
alfredo
pierro 
vincenzo
campana 
donato
conte 
nicola
-- Attached file included as plaintext by Ecartis --
-- File: file2.txt

altieri 
emiliano
rossi 
emilio
iodice 
agostino
salerno 
luca
cappena 
vittorio
nuzzolo 
filippo
cecere 
tullio
caprio 
fancesco
-- Attached file included as plaintext by Ecartis --
-- File: file3.txt

altieri  emiliano
campana  donato
cappena  vittorio
caprio  fancesco
cecere  tullio
conte  nicola
demezza  cosimo
iacicco  luciano
iannace  alfredo
iodice  agostino
nuzzolo  filippo
pierro  vincenzo
rosa  antonio
rossi  emilio
russo  tommaso
salerno  luca

-- Binary/unsupported file stripped by Ecartis --
-- Type: application/octet-stream
-- File: TestFusione.java


-- Binary/unsupported file stripped by Ecartis --
-- Type: application/octet-stream
-- File: TestOrdinaRicerca.java



Other related posts:

  • » [bottega] Re:[bottega] Re:[bottega] Re: ti mando l