Esercizio 1 ----------- Si implementi una classe Java che consenta di rappresentare i numeri RAZIONALI. A parte la "dotazione" standard, che comprende costruttori (di default, per copia, con parametri), i metodi get/set, e la riscrittura dei metodi "ereditati" dalla classe Object (toString(), equals(), clone()), preveda ALMENO i seguenti metodi: - public static Razionale leggi(Scanner input) - public double toDouble(): restituisce il numero double ottenuto dividendo il numeratore e il denominatore (che sono interi); - private void semplifica(): riduce ai minimi termini il numero razionale (cioe', divide numeratore e denominatore per il loro massimo comun divisore). Il metodo semplifica e' privato, e si intende come metodo di servizio per tutti quelli che modificano il numero razionale (set, costruttori, etc.): in pratica, ogni razionale e' rappresentato nella sua forma ridotta. - public boolean minoreDi(Razionale r) - public boolean minoreDiOUgualeA(Razionale r) - public boolean maggioreDi(Razionale r) { - public boolean maggioreDiOUgualeA(Razionale r) { - public void moltiplica(Razionale r) - public void dividi(Razionale r) - public void inverti(): scambia numeratore e denominatore (si puo' fare solo se il numeratore e' diverso da zero!) - public void somma(Razionale r) - public void sottrai(Razionale r) Esercizio 2 ----------- Si legga da input una sequenza di numeri razionali, e la si memorizzi in un array. Si legga poi un nuovo numero razionale "r1" da input, e lo si cerchi nell'array: si indichino tutte le posizioni in cui esso compare, o si dica chiaramente che esso non e' presente nell'array. Esercizio 3 ----------- si implementi la ricerca descritta nell'esercizio 2 in maniera ricorsiva. Esercizio 4 ----------- Si calcoli il numero razionale "rm1" come la MEDIA dei numeri razionali contenuti nell'array descritto nell'esercizio 2. Esercizio 5 ----------- Si leggano da input 2 array, siano "a" e "b", ciascuno contenente 10 numeri razionali. Si crei un terzo array, sia "c", di lunghezza 10, contenente 10 numeri INTERI, inizialmente tutti pari a ZERO. Si modifichi l'array "c" nel seguente modo: per ogni elemento in posizione "i" nell'array "a", si vada nella posizione di "c" corrispondente al valore del numeratore di "a[i]", e ci si metta il valore del denominatore di "b[i]". Si noti che si deve fare attenzione a non "uscire" dai margini dell'array "c"; inoltre, se per caso si dovesse intervenire piu' volte nella stessa posizione di "c", la si lasci impostato con l'ultimo valore incontrato. Alla fine, si calcoli il numero di zeri rimasti nell'array "c".