ArrayFrazioni

Questo programma memorizza in un array un elenco di frazioni e quindi ne esegue la somma e la media. Da notare è l'uso dell'array e dei due cicli per percorrerlo, cioè i cicli FOR e FOR EACH.

 

 

//crea un array e somma un numero di frazioni stabilito dall'utente

// e ne stabilisce la media

import prog.io.*;

import prog.utili.Frazione;

 

class ArrayFrazione {

                public static void main(String[] args) {

                               ConsoleInputManager tastiera = new ConsoleInputManager();

                               ConsoleOutputManager video = new ConsoleOutputManager();

                              

                               //chiede e assegna alla costante il numero di frazioni da inserire

                               final int MAX = tastiera.readInt("Quante frazioni vuoi inserire? ");

                              

                               //assegnazione degli oggetti

                               Frazione somma = new Frazione(0);

                               Frazione media;

                               String visualSomma = "";

                               String visualMedia = "";

                              

                               //se non si vuole inserire nessuna frazione esce subito

                               if (MAX != 0) {

                                               //imposta l'array, tra parentesi quadre viene indicato

                                               //il numero di elementi di cui è composto l'array

                                               Frazione[] fraz = new Frazione[MAX];

                                              

                                               //lettura delle frazioni

                                               for (int pos = 0; pos < MAX; pos++) {

                                                               video.println("Lettura della frazione n." + (pos + 1) + ": ");

                                                               int numeratore = tastiera.readInt("Numeratore: ");

                                                               int denominatore = tastiera.readInt("Denominatore: ");

                                                               fraz[pos] = new Frazione(numeratore, denominatore);

                                                               somma = somma.piu(fraz[pos]);

                                                               //assegna alla stringa visualizza la prima frazione

                                                               visualSomma = fraz[0].toString();

                                                               //nel caso di ciclo for-each questa istruzione va tolta

                                                               //visto che il ciclo for-each parte sempre da zero

                                                               //visualMedia = fraz[0].toString();

                                               }

                                              

                               //calcola la media

                               media = somma.diviso(new Frazione(MAX));

                              

                               //legge le frazioni e calcola la somma

                               for (int pos = 1; pos < MAX; pos++) {

                                                               visualSomma = visualSomma + " + " + fraz[pos].toString();

                                               }

                               //visualizza la somma

                               video.println(visualSomma + " = " + somma.toString());

                              

                               //legge le frazioni col metodo for-each

                               //ogni frazione trovata nell'array fraz viene assegnata

                               //alla frazione j

                               for (Frazione j : fraz) {

                                               visualMedia = visualMedia + "; " + j.toString();

                                               }

                               //visualizza la media

                               video.println(visualMedia + " la media e': " + media.toString());

                              

                               } //fine primo if

                               else {

                                               video.println("Non e' stata sommata nessuna frazione!");

                               }

                                                              

                }

}