Add tema d'esame
This commit is contained in:
parent
89479bf7fa
commit
b5dce92962
66
src/Temi d'esame/Persone/AlberoBinarioDiRicerca.java
Normal file
66
src/Temi d'esame/Persone/AlberoBinarioDiRicerca.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
public class AlberoBinarioDiRicerca{
|
||||||
|
|
||||||
|
public AlberoBinarioDiRicerca(Scanner sc, Comparator<Persona> cmp){
|
||||||
|
tree = new TreeSet<Persona>(cmp);
|
||||||
|
Persona p=Persona.read(sc);
|
||||||
|
while(p!=null){
|
||||||
|
tree.add(p);
|
||||||
|
p=Persona.read(sc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private AlberoBinarioDiRicerca(Set<Persona> tree){
|
||||||
|
this.tree=tree;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AlberoBinarioDiRicerca sort(Comparator<Persona> cmp){
|
||||||
|
Set<Persona> newTree = new TreeSet<Persona>(cmp);
|
||||||
|
for(Persona p: tree)
|
||||||
|
newTree.add(p);
|
||||||
|
return new AlberoBinarioDiRicerca(newTree);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
for(Persona p: tree)
|
||||||
|
p.print(ps);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Set<Persona> tree;
|
||||||
|
}
|
||||||
|
|
||||||
|
class NomeComparator implements Comparator<Persona>{
|
||||||
|
public int compare(Persona p1, Persona p2){
|
||||||
|
return p1.getNome().compareTo(p2.getNome());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CognomeComparator implements Comparator<Persona>{
|
||||||
|
public int compare(Persona p1, Persona p2){
|
||||||
|
return p1.getCognome().compareTo(p2.getCognome());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DataComparator implements Comparator<Persona>{
|
||||||
|
public int compare(Persona p1, Persona p2){
|
||||||
|
return p1.getDataDiNascita().compareTo(p2.getDataDiNascita());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PesoComparator implements Comparator<Persona>{
|
||||||
|
public int compare(Persona p1, Persona p2){
|
||||||
|
return ((Double) p1.getPeso()).compareTo((Double) (p2.getPeso()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class AltezzaComparator implements Comparator<Persona>{
|
||||||
|
public int compare(Persona p1, Persona p2){
|
||||||
|
return ((Double) p1.getAltezza()).compareTo((Double) (p2.getAltezza()));
|
||||||
|
}
|
||||||
|
}
|
112
src/Temi d'esame/Persone/Persona.java
Normal file
112
src/Temi d'esame/Persone/Persona.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
import java.util.Scanner;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.text.ParseException;
|
||||||
|
|
||||||
|
public class Persona{
|
||||||
|
|
||||||
|
public Persona(String nome, String cognome, Date dataDiNascita, double peso, double altezza){
|
||||||
|
this.nome=nome;
|
||||||
|
this.cognome=cognome;
|
||||||
|
this.dataDiNascita=dataDiNascita;
|
||||||
|
this.peso=peso;
|
||||||
|
this.altezza=altezza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNome(){
|
||||||
|
return nome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCognome(){
|
||||||
|
return cognome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataDiNascita(){
|
||||||
|
return dataDiNascita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getPeso(){
|
||||||
|
return peso;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAltezza(){
|
||||||
|
return altezza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNome(String nome){
|
||||||
|
this.nome = nome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataDiNascita(Date dataDiNascita){
|
||||||
|
this.dataDiNascita = dataDiNascita;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCognome(String cognome){
|
||||||
|
this.cognome = cognome;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPeso(double peso){
|
||||||
|
this.peso=peso;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAltezza(double altezza){
|
||||||
|
this.altezza=altezza;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Persona read(Scanner sc){
|
||||||
|
String nome, cognome;
|
||||||
|
Date dataDiNascita;
|
||||||
|
double peso, altezza;
|
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
nome=sc.nextLine();
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
cognome=sc.nextLine();
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
try{
|
||||||
|
dataDiNascita=sdf.parse(sc.nextLine());
|
||||||
|
}
|
||||||
|
catch(ParseException exception){
|
||||||
|
System.err.println("Impossibile convertire la stringa in data");
|
||||||
|
System.err.println("Data impostata a epoch");
|
||||||
|
dataDiNascita=new Date(0);
|
||||||
|
}
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
try{
|
||||||
|
peso=Double.parseDouble(sc.nextLine());
|
||||||
|
}
|
||||||
|
catch(NumberFormatException exception){
|
||||||
|
System.err.println("Impossibile convertire la stringa in data");
|
||||||
|
System.err.println("Peso impostato a 0");
|
||||||
|
peso=0;
|
||||||
|
}
|
||||||
|
if(!sc.hasNextLine()) return null;
|
||||||
|
try{
|
||||||
|
altezza=Double.parseDouble(sc.nextLine());
|
||||||
|
}
|
||||||
|
catch(NumberFormatException exception){
|
||||||
|
System.err.println("Impossibile convertire la stringa in data");
|
||||||
|
System.err.println("altezza impostata a 0");
|
||||||
|
altezza=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Persona(nome, cognome, dataDiNascita, peso, altezza);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print(PrintStream ps){
|
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
ps.println(nome);
|
||||||
|
ps.println(cognome);
|
||||||
|
ps.println(sdf.format(dataDiNascita));
|
||||||
|
ps.println(peso);
|
||||||
|
ps.println(altezza);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String nome;
|
||||||
|
private String cognome;
|
||||||
|
private Date dataDiNascita;
|
||||||
|
private double peso;
|
||||||
|
private double altezza;
|
||||||
|
}
|
BIN
src/Temi d'esame/Persone/Prog-2013-05-28.pdf
Normal file
BIN
src/Temi d'esame/Persone/Prog-2013-05-28.pdf
Normal file
Binary file not shown.
11
src/Temi d'esame/Persone/Test.java
Normal file
11
src/Temi d'esame/Persone/Test.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import java.io.File;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class Test{
|
||||||
|
public static void main(String [] args)throws Exception{
|
||||||
|
File fl = new File("persone.dat");
|
||||||
|
AlberoBinarioDiRicerca tree = new AlberoBinarioDiRicerca(new Scanner(fl), new PesoComparator());
|
||||||
|
tree.sort(new NomeComparator()).print(System.out);
|
||||||
|
}
|
||||||
|
}
|
20
src/Temi d'esame/Persone/persone.dat
Normal file
20
src/Temi d'esame/Persone/persone.dat
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Pinco Panco
|
||||||
|
cnome
|
||||||
|
12/02/1998
|
||||||
|
65.9
|
||||||
|
177.8
|
||||||
|
Raffaele
|
||||||
|
Mignone
|
||||||
|
18/07/1996
|
||||||
|
71.5
|
||||||
|
175.5
|
||||||
|
Pluto
|
||||||
|
Disney
|
||||||
|
15/09/2009
|
||||||
|
34.6
|
||||||
|
134.7
|
||||||
|
Vincenzo
|
||||||
|
Manganiello
|
||||||
|
04/09/2005
|
||||||
|
40.7
|
||||||
|
146.9
|
Loading…
Reference in New Issue
Block a user