stefarossi

Untitled

Oct 23rd, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. import java.util.Vector;
  2.  
  3. class Trasmissione {
  4. // la classe modellizza una singola trasmissione
  5.  
  6.     public String nome, genere; // nome e genere di una trasmissione
  7.     public int hh,mm;         // orario d'inizio della trasmissione, hh l'ora e mm i minuti
  8.     public int durata;      // durata della trasmissione in minuti
  9.     public Trasmissione(){}
  10.    
  11.     public Trasmissione(String n, String g, int h, int m, int d){
  12.         nome=n;
  13.         genere=g;
  14.         hh=h;
  15.         mm=m;
  16.         durata=d;
  17.     }
  18.    
  19.     public void Stampa(){
  20.         System.out.println(nome+" - "+genere+" "+hh+":"+mm);
  21.     }
  22. }
  23.  
  24. class Palinsesto {
  25. // la classe modellizza il palinsesto di una singola giornata
  26.  
  27.     public Vector<Trasmissione> LT; // lista dei programmi previsti in una giornata
  28.  
  29.     public Palinsesto(){
  30.         LT = new Vector<Trasmissione>();
  31.     }
  32.    
  33.     public void addTrasmiNoCheck(Trasmissione T){
  34.         // aggiunge una trasmissione in coda senza controllare se vi è
  35.         // già un programma a quell'ora e se vi è abbastanza tempo tra
  36.         // una trasmissione e l'altra
  37.         LT.add(T);
  38.        
  39.     }
  40.    
  41.     private int orarioInMinuti(int hh, int mm){
  42.         return hh*60 + mm;
  43.     }
  44.     private int orarioFine(int hh, int mm, int d) {
  45.         return orarioInMinuti(hh,mm)+d;
  46.     }
  47.    
  48.     private boolean orarioLibero(int mm) {
  49.         for (int i=0;i<LT.size();i++) {
  50.             int minutiInizio = orarioInMinuti(LT.get(i).hh, LT.get(i).mm);
  51.             int minutiFine = orarioFine(LT.get(i).hh, LT.get(i).mm, LT.get(i).durata);
  52.             if (mm >= minutiInizio && mm < minutiFine)
  53.                 return false;
  54.         }
  55.         return true;
  56.     }
  57.  
  58.     private boolean orarioLibero(int hh, int mm, int d) {
  59.         int minutiInizio = orarioInMinuti(hh, mm);
  60.         int minutiFine = orarioFine(hh, mm, d);
  61.         for (int i=minutiInizio; i<=minutiFine; i++) {
  62.             if (! orarioLibero(i))
  63.                 return false;
  64.         }
  65.         return true;
  66.        
  67.     }
  68.    
  69.     public void  addTrasmiCheck(Trasmissione T){
  70.         // aggiunge una trasmissione solo se non vi è un'altra trasmissione
  71.         // per lo stesso orario
  72.         // Se vi è una trasmissione allo stesso orario stampa il messaggio
  73.         // "orario occupato" e se tra la trasmissione e la successiva vi è
  74.         // abbastanza tempo libero
  75.    
  76.         if (orarioLibero(T.hh, T.mm, T.durata))
  77.             LT.add(T);
  78.         else
  79.             System.out.println("Orario occupato. Sorry... :'(");
  80.     }
  81.    
  82.    
  83.     public void StampaElenco(){
  84.         for (int i=0;i<LT.size();i++){
  85.             LT.get(i).Stampa();
  86.         }
  87.     }
  88. }
  89.  
  90. public class Provami4H {   
  91.     public static void main (String args[]) {
  92.         // La Delli mi guarda male...
  93.         // Colmegna: "mi stai guardando?"
  94.         Palinsesto P1 = new Palinsesto();
  95.  
  96.         Trasmissione T1=new Trasmissione("Uno mattina","show",7,0,160);
  97.         Trasmissione T2=new Trasmissione("TG1","telegiornale",9,00,60);
  98.         Trasmissione T3=new Trasmissione("Quark","cultura",10,00,60);
  99.         Trasmissione T4=new Trasmissione("NCIS","serial",11,00,60);
  100.         Trasmissione T5=new Trasmissione("Agatha Christie's Poirot","serial",12,00,60);
  101.  
  102.         P1.addTrasmiCheck(T1);
  103.         P1.addTrasmiCheck(T2);
  104.         P1.addTrasmiCheck(T3);
  105.         P1.addTrasmiCheck(T4);
  106.         P1.addTrasmiCheck(T5);
  107.         P1.StampaElenco();
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment