--------------------------------------- /**Il TDA pila di interi */ class Pila { /** Il numero di elementi massimo */ private static final int MAXELEMENTI = 10; /** Il vettore che contiene gli elementi*/ private int[] elementi; /** Il numero di elementi effettivamente presenti */ private int numElementi; /** Costruttore */ public Pila() { numElementi = 0; elementi = new int[MAXELEMENTI]; } /** Dice se la pila e' vuota */ public boolean vuota() { return (numElementi == 0); } /** Dice se la pila e' piena */ public boolean piena() { return (numElementi == MAXELEMENTI); } /** push dell'elemento e sulla pila */ public void push (int e) { if (!piena()) elementi[numElementi++] = e; } /** Restituisce il top della pila */ public int top() { if (!vuota()) return elementi[numElementi - 1]; else return -1; } /** Elimina un elemento dalla cima della pila */ public void pop() { if(!vuota()) numElementi--; } } --------------------------------------- /** Programma per la prova della classe Pila. */ class ProvaPila { public static void main (String[] args) { Pila p1 = new Pila(); p1.push(1); p1.push(2); p1.push(3); p1.push(4); System.out.println(p1.top()); p1.pop(); p1.pop(); System.out.println(p1.top()); p1.push(5); System.out.println(p1.top()); } } --------------------------------------- public static Pila push (Pila p, int e) { if (!piena(p)) p.elementi[p.numElementi++] = e; return p; } --------------------------------------- public static void push (PilaP p, int e) { if (!piena(p)) p.elementi[p.numElementi++] = e; } --------------------------------------- public void push (int e) { if (!piena()) elementi[numElementi++] = e; } --------------------------------------- class Insieme { private int maxElementi; private boolean[] elementi; /** Costruttore */ public Insieme(int num) { maxElementi = num; elementi = new boolean[maxElementi]; } /** Costruttore copia: costruisce (e restituisce) un insieme * uguale a quello passato come parametro */ public Insieme(Insieme x) { maxElementi = x.maxElementi; elementi = new boolean[maxElementi]; for (int i = 0; i < maxElementi; i++) elementi[i] = x.elementi[i]; } /** Dice se l'insieme x e' vuoto */ public boolean vuoto() { boolean trovato = false; for(int i = 0; i < maxElementi; i++) if (elementi[i]) { trovato = true; break; } return !trovato; } /** Inserisce l'elemento e */ public void inserisci(int e) { elementi[e] = true; } /** Elimina l'elemento e */ public void elimina(int e) { elementi[e] = false; } /** Predicato di appartenenza */ public boolean appartiene(int e) { return elementi[e]; } /** Restituisce una stringa del tipo {...} */ public String toString() { String str = ""; boolean primo = true; str = str + "{"; for (int i = 0; i < maxElementi; i++) { if (elementi[i]) { if (primo) primo = false; else str = str + ","; str = str + i; } } str = str + "}"; return str; } } --------------------------------------- class ProvaInsieme { // solo per testare l'implementazione public static void main(String[] args) { Insieme a = new Insieme(100); System.out.println(a.vuoto()); a.inserisci(13); a.inserisci(11); System.out.println(a); Insieme b = new Insieme(a); System.out.println(a.appartiene(13)); System.out.println(b.appartiene(11)); System.out.println(a.appartiene(17)); System.out.println(a.vuoto()); a.elimina(11); System.out.println(a); a.elimina(13); System.out.println(a); System.out.println(b); System.out.println(a.appartiene(11)); System.out.println(a.vuoto()); } } --------------------------------------- >java ProvaInsieme true {11,13} true true false false {13} {} {11,13} false true --------------------------------------- class Punto { private double x; private double y; public Punto() { this(0,0); } public Punto(double x, double y) { this.x = x; this.y = y; } public void set(double x, double y) { this.x = x; this.y = y; } public void setX(double x) { this.x = x; } public void setY(double x) { this.y = y; } public double getX() { return x; } public double getY() { return y; } public String toString() { return "(" + x + ", " + y + ")"; } } --------------------------------------- class Cerchio { private Punto centro; private double raggio; public Cerchio() { this(new Punto(),0); } public Cerchio(double x, double y, double r) { this(new Punto(x,y),r); } public Cerchio(Punto c, double r) { centro = c; raggio = r; } public void setCentro(Punto c) { centro = c; } public void setRaggio(double r) { raggio = r; } public Punto getCentro() { return centro; } public double getRaggio() { return raggio; } public String toString() { return "cerchio: centro " + getCentro() + " raggio " + getRaggio(); } } --------------------------------------- class Quadrato { private Punto altoSx; private Punto bassoDx; public Quadrato() { this (new Punto(), new Punto()); } public Quadrato(int x1, int y1, int x2, int y2) { this(new Punto(x1,y1), new Punto(x2,y2)); } public Quadrato(Punto a, Punto b) { altoSx = a; bassoDx = b; } public void setAltoSx(Punto x) { altoSx = x; } public void setBassoDx(Punto x) { bassoDx = x; } public Punto getAltoSx() { return altoSx; } public Punto getBassoDx() { return bassoDx; } public String toString() { return "quadrato: alto Sx " + getAltoSx() + " basso Dx " + getBassoDx(); } } --------------------------------------- /** Programma per la prova dei cerchi, punti e quadrati */ class ProvaCerchioQuadrato { public static void main (String[] args) { Punto p1 = new Punto(); Punto p2 = new Punto(1,1); Cerchio c1 = new Cerchio(); System.out.println(c1); Cerchio c2 = new Cerchio(p1,0); System.out.println(c2); p2.set(1.2,3.3); c1.setCentro(new Punto(12,12)); System.out.println(c1); System.out.println(c1.getCentro()); System.out.println((c1.getCentro()).getX()); Cerchio c3 = new Cerchio(p2,1); System.out.println(c3); Quadrato q1 = new Quadrato(); System.out.println(q1); Quadrato q2 = new Quadrato(p1,p2); System.out.println(q2); } } --------------------------------------- >javac ProvaCerchioQuadrato.java; java ProvaCerchioQuadrato cerchio: centro (0.0, 0.0) raggio 0.0 cerchio: centro (0.0, 0.0) raggio 0.0 cerchio: centro (12.0, 12.0) raggio 0.0 (12.0, 12.0) 12.0 cerchio: centro (1.2, 3.3) raggio 1.0 quadrato: alto Sx (0.0, 0.0) basso Dx (0.0, 0.0) quadrato: alto Sx (0.0, 0.0) basso Dx (1.2, 3.3) --------------------------------------- public Cerchio() { Punto c = new Punto(); this(c,0); } --------------------------------------- Constructor invocation must be the first thing in a method. this(a,b); ^ --------------------------------------- public Cerchio (Punto centro, double raggio) --------------------------------------- public void push (int e) { if (!piena()) elementi[numElementi++] = e; } --------------------------------------- class CodaInteri { private final int MAXELEMENTI = 10; /** Numero di elementi attualmente in coda */ private int numElementi; /** Indice del primo elemento in coda (se coda non vuota) */ private int primo; /** Indice dell'ultimo elemento in coda (se coda non vuota)*/ private int ultimo; /** Array di elementi */ private int[] elementi; /** Costruttore */ public CodaInteri() { elementi = new int[MAXELEMENTI]; numElementi = 0; primo = 1; ultimo = 0; } /** test di coda vuota */ public boolean vuota() { return (numElementi == 0); } /** test di coda piena */ public boolean piena() { return (numElementi == MAXELEMENTI); } /** Inserisce un elemento */ public void aggiungi(int e) { if (piena()) System.out.println("ERRORE: Inserimento in coda piena"); else { numElementi++; ultimo = (ultimo + 1) % MAXELEMENTI; elementi[ultimo] = e; } } /** Estrae un elemento */ public void estrai() { if (vuota()) System.out.println("ERRORE: Estrazione da coda vuota"); else { numElementi--; primo = (primo + 1) % MAXELEMENTI; } } /** Restituisce il primo della coda */ public int primo() { if (vuota()) { System.out.println("ERRORE: Primo elemento di coda vuota"); return -1; } else { return elementi[primo]; } } } --------------------------------------- class ProvaCodaInteri { public static void main(String[] args) { CodaInteri c = new CodaInteri(); System.out.println(c.vuota()); System.out.println(c.piena()); c.aggiungi(0); c.aggiungi(1); System.out.println(c.vuota()); System.out.println(c.primo()); c.estrai(); System.out.println(c.primo()); for (int i = 2; i <= 9; i++) c.aggiungi(i); System.out.println(c.piena()); c.aggiungi(10); System.out.println(c.piena()); System.out.println(c.primo()); c.estrai(); c.estrai(); System.out.println(c.piena()); System.out.println(c.primo()); c.aggiungi(11); c.aggiungi(12); System.out.println(c.piena()); System.out.println(c.primo()); for (int i = 1; i <= 9; i++) c.estrai(); System.out.println(c.primo()); } } --------------------------------------- >java ProvaCodaInteri true false false 0 1 false true 1 false 3 true 3 12 --------------------------------------- class Complesso { private int re; private int im; public Complesso() { this(0,0); } public Complesso(int re, int im) { this.re = re; this.im = im; } public int getRe() { return re; } public int getIm() { return im; } public void setRe(int x) { re = x; } public void setIm(int x) { im = x; } public void set(int x, int y) { setRe(x); setIm(y); } public void leggiComplesso() { System.out.print("Parte reale: "); setRe(Utilita.leggiIntero()); System.out.print("Parte immaginaria: "); setIm(Utilita.leggiIntero()); } public String toString() { return (getRe() + " + i * " + getIm()); } public void moltiplicamiPer(Complesso x) { int re, im; re = x.getRe() * getRe() - x.getIm() * getIm(); im = x.getRe() * getIm() + x.getIm() * getRe(); this.re = re; this.im = im; } public static Complesso moltiplica (Complesso x, Complesso y){ return (new Complesso(x.getRe() * y.getRe() - x.getIm() * y.getIm(), x.getRe() * y.getIm() + x.getIm() * y.getRe())); } } --------------------------------------- class ProvaComplesso { public static void main (String[] args) { Complesso x = new Complesso(1,1); Complesso i = new Complesso(0,1); Complesso y = new Complesso(); Complesso z = new Complesso(); y.setRe(3); y.setIm(3); z.leggiComplesso(); System.out.println(z); System.out.println(x); System.out.println(i); System.out.println(y); y.moltiplicamiPer(x); System.out.println(y); z = Complesso.moltiplica(x,y); System.out.println(z); } } --------------------------------------- >javac ProvaComplesso.java ; java ProvaComplesso Parte reale: 1 1 Parte immaginaria: 1 1 1 + i * 1 1 + i * 1 0 + i * 1 3 + i * 3 0 + i * 6 -6 + i * 6 --------------------------------------- class Tempo { private int ore; private int minuti; private int secondi; public Tempo() { this(0,0,0); } public Tempo(int o, int m, int s) { if (tempoCorretto(o,m,s)) { ore = o; minuti = m; secondi = s; } else { System.out.println("Errore"); ore = 0; minuti = 0; secondi = 0; } } public boolean tempoCorretto(int o, int m, int s) { return (o >= 0 && o <= 24 && m >= 0 && m <= 60 && s >= 0 && s <= 60); } public void setTempo(int o, int m, int s) { if (tempoCorretto(o,m,s)) { ore = o; minuti = m; secondi = s; } else System.out.println("Errore"); } public int getOre() { return ore; } public int getMinuti() { return minuti; } public int getSecondi() { return secondi; } public String toString() { return getOre() + ":" + getMinuti() + ":" + getSecondi(); } } --------------------------------------- /** Programma per la prova della classe tempo. */ class ProvaTempo { public static void main (String[] args) { Tempo t1, t2; t1 = new Tempo(); t2 = new Tempo(12,30,10); System.out.println(t1); System.out.println(t2); t1 = t2; System.out.println(t2); t1.setTempo(23,59,59); System.out.println(t1); t1.setTempo(23,61,59); System.out.println(t1); } } --------------------------------------- >javac ProvaTempo.java >java ProvaTempo 0:0:0 12:30:10 12:30:10 23:59:59 Errore 23:59:59