11.07.2015 Views

Soluzioni Esercizi Q2 (pdf, it, 131 KB, 3/23/09)

Soluzioni Esercizi Q2 (pdf, it, 131 KB, 3/23/09)

Soluzioni Esercizi Q2 (pdf, it, 131 KB, 3/23/09)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ZeroUno z1 = new ZeroUno(s);ZeroUno z2 = new ZeroUno(10);schermo.println("Oggetto 1: " + z1.toString());schermo.println("Somma: " + z1.somma());}schermo.println("Oggetto 2: " + z2.toString());schermo.println("Somma: " + z2.somma());}<strong>Esercizi</strong>o <strong>Q2</strong> 24Si progetti una classe di nome GrandiIntPos<strong>it</strong>ivi, la quale istanzia oggetti che modellano numeri interi pos<strong>it</strong>ivi di 20 cifre.La classe mantiene cifre comprese tra 0 e 9 in un campo array privato int[] cifre di dimensione costante MAX posta a 20. Laclasse fornisce:1. un costruttore che, invocato senza parametri, costruisce un oggetto che rappresenta lo zero, ovvero inizializza l’arrayponendo tutti gli elementi a zero;2. un costruttore che, ricevuto un parametro di tipo String, costruisce un oggetto che rappresenta il numero contenutonella stringa. Per semplic<strong>it</strong>a’ si assuma che la stringa contenga solo cifre decimali. Inoltre, lo stesso costruttore siaeventualmente in grado di scartare la coda di stringhe lunghe piu’ di 20 cifre;3. un metodo GrandiIntPos<strong>it</strong>ivi piu(GrandiIntPos<strong>it</strong>ivi g) che rest<strong>it</strong>uisce, in forma di un nuovo oggetto, la somma dell’oggettoche esegue il metodo con quello passato come parametro. Se la stessa somma supera le 20 cifre allorarest<strong>it</strong>uisce l’oggetto che rappresenta il piu’ grande intero pos<strong>it</strong>ivo di 20 cifre;4. un metodo GrandiIntPos<strong>it</strong>ivi perInt(int a) che rest<strong>it</strong>uisce il prodotto dell’oggetto che esegue il metodo per l’interopos<strong>it</strong>ivo passato come parametro. Il metodo deve essere implementato in forma RICORSIVA, facendo uso del metodo”piu”.5. un metodo toString() che stampa in forma di stringa lunga 20 caratteri il numero rappresentato dall’oggetto cheutilizza il metodo;6. un metodo boolean equals(GrandiIntPos<strong>it</strong>ivi g) che verifica l’uguaglianza tra due oggetti in base al numero rappresentato.La classe contenga infine un metodo main con semplici istruzioni di test della classe (somma fra due oggetti, prodotto perun intero pos<strong>it</strong>ivo e stampa).import prog.io.ConsoleInputManager;import prog.io.ConsoleOutputManager;public class GrandiIntPos<strong>it</strong>ivi {//////////////////////////////private static int MAX = 10;private int[] cifre;//////////////////////////////public GrandiIntPos<strong>it</strong>ivi() {cifre = new int[MAX];}//////////////////////////////// cifre tutte uguali a zeropublic GrandiIntPos<strong>it</strong>ivi(String s) {this();int l = (s.length()>MAX ? MAX : s.length()) ;int n = MAX;while (l>0)cifre[--n] = s.charAt(--l) - ’0’;}//////////////////////////////public GrandiIntPos<strong>it</strong>ivi piu(GrandiIntPos<strong>it</strong>ivi g) {GrandiIntPos<strong>it</strong>ivi h = new GrandiIntPos<strong>it</strong>ivi();int somma_cifre;// al massimo MAX cifre// cifra meno significativa in coda all’array31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!