Numeri razionali e lista - Java

di il
12 risposte

Numeri razionali e lista - Java

Buonasera ragazzi, stavo svolgendo alcuni esercizi presi su internet e da un libro dal quale sto studiando e mi è sorto qualche dubbio. In un esercizio mi si chiede banalmente di inserire un numero a piacere di numeri razionali e successivamente stampare a schermo quelli maggiori di 5 mentre bisogna calcolare somma e media e successivamente mostrarla. Sembrerà facile ma mi chiedevo come potessi rappresentare ciò. Inizialmente ho proceduto così:

-Chiedevo di inserire un numeratore
-Successivamente un denominatore per poi controllare fosse diverso da 0
-Infine fare la divisione tra numeratore e denominatore e salvare il risultato in una variabile double

Parlando con qualche amico, però, mi è stato consigliato di usare direttamente numeri double quindi inserire numeri con la virgola senza numeratore e denominatore. Secondo voi è una pratica corretta e migliore della prima?
Altra domanda riguardo un altro esercizio "Creare una lista di lunghezza indefinita di stringhe" per poi analizzarla successivamente e vedere se contenesse numeri o solo parole. Ma precisamente cosa dovrei fare? Da programma creare una lista e riempirla io stesso a piacere con quante stringhe io voglia? Perchè non scrive di far intervenire l'utente e quindi riempirla mediante dati da tastiera.
Grazie mille

12 Risposte

  • Re: Numeri razionali e lista - Java

    Non ascoltare il tuo amico!

    Un numero razionale NON E' un numero con la virgola, ma un numero composto da DUE numeri interi.

    Quello che l'esecizio ti sta' chiedendo, in pratica, e' quello di IMPLEMENTARE le 4 operazioni tra numeri razionali PIU' l'operazione di normalizzazione (6/8 = 3/4) e quindi fare un po' di operazioni (somma, sottrazione, media che corrisponde ad una divisione ma, per le proprioeta' dei numeri razionali, e' ANCHE una moltiplicazione).

    Richiedere i numeri da tastiera e' una ENORME SCOCCIATURA. Passali direttamente da codice.

    In GENERALE, richiedere dati all'utente (mediante tastiera), per fare esercizi, e' una ENORME SCOCCIATURA.

  • Re: Numeri razionali e lista - Java

    Luca Mano ha scritto:


    In un esercizio mi si chiede banalmente di inserire un numero a piacere di numeri razionali e successivamente stampare a schermo quelli maggiori di 5 mentre bisogna calcolare somma e media e successivamente mostrarla. Sembrerà facile ma mi chiedevo come potessi rappresentare ciò.
    Se come dice migliorabile si tratta di un esercizio sulla gestione delle "frazioni", allora il modo giusto di rappresentare questo è di creare una classe Java che "modella" la frazione, con gli attributi (possibilmente/preferibilmente "immutabili") numeratore e denominatore e poi implementare nella classe i metodi per farci delle operazioni.

    Del tipo (esempio d'uso basilare):
    Frazione f1 = new Frazione(1, 2);     // 1/2
    Frazione f2 = new Frazione(3, 4);     // 3/4
    Frazione fris = f1.addiziona(f2);
    P.S. invece che Frazione puoi chiamarla NumeroRazionale (a scelta )
  • Re: Numeri razionali e lista - Java

    Per il secondo problema puoi iniziare così
    
    import java.io.*;
    import java.util.*;
    
    public class TestList {
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
                System.out.println("Inserisci una sequenza di stringhe:"); 
                String str;
                List<String> lista = new ArrayList<>();
                do{
                    str = br.readLine();
                    if(str.length() > 0)
                        lista.add(str);
                }while(str.length() > 0);	    
                System.out.println("Hai inserito queste stringhe:"); 
                lista.forEach( s -> {System.out.println(s);} );
        }
    }
    
  • Re: Numeri razionali e lista - Java

    migliorabile ha scritto:


    Non ascoltare il tuo amico!

    Un numero razionale NON E' un numero con la virgola, ma un numero composto da DUE numeri interi.

    Quello che l'esecizio ti sta' chiedendo, in pratica, e' quello di IMPLEMENTARE le 4 operazioni tra numeri razionali PIU' l'operazione di normalizzazione (6/8 = 3/4) e quindi fare un po' di operazioni (somma, sottrazione, media che corrisponde ad una divisione ma, per le proprioeta' dei numeri razionali, e' ANCHE una moltiplicazione).

    Richiedere i numeri da tastiera e' una ENORME SCOCCIATURA. Passali direttamente da codice.

    In GENERALE, richiedere dati all'utente (mediante tastiera), per fare esercizi, e' una ENORME SCOCCIATURA.

    Grazie mille per la risposta Tengo a precisare però, rispondendo anche all'altro ragazzo che ha risposto in merito al quesito sui razionali, che non si tratta di esercizi con frazioni e quindi implementare una classe frazione. Semplicemente il testo diceva di inserire a piacere un numero arbitrario di numeri razionali e finito l'ultimo inserimento(quindi da qui immagino si evinca debba farlo l'utente) calcolare la somma, la media ed infine stampare eventuali numeri maggiori di 5. Forse per questo mi è stato consigliato ciò perchè magari nella traccia non si faceva riferimento a nessuna classe frazione o chicchessia. Però è anche vero che un numero razionale per definizione è quello formato da numeratore e denominatore così come da un numero decimale. Grazie ancora
  • Re: Numeri razionali e lista - Java

    andbin ha scritto:


    Luca Mano ha scritto:


    In un esercizio mi si chiede banalmente di inserire un numero a piacere di numeri razionali e successivamente stampare a schermo quelli maggiori di 5 mentre bisogna calcolare somma e media e successivamente mostrarla. Sembrerà facile ma mi chiedevo come potessi rappresentare ciò.
    Se come dice migliorabile si tratta di un esercizio sulla gestione delle "frazioni", allora il modo giusto di rappresentare questo è di creare una classe Java che "modella" la frazione, con gli attributi (possibilmente/preferibilmente "immutabili") numeratore e denominatore e poi implementare nella classe i metodi per farci delle operazioni.

    Del tipo (esempio d'uso basilare):
    Frazione f1 = new Frazione(1, 2);     // 1/2
    Frazione f2 = new Frazione(3, 4);     // 3/4
    Frazione fris = f1.addiziona(f2);
    P.S. invece che Frazione puoi chiamarla NumeroRazionale (a scelta )
    Ciao andbin, ringrazio anche te per la risposta e tengo a precisare una cosa, come sopra riportavo a miglioraribile. In realtà non si tratta di esercizi con frazioni e quindi implementare una classe frazione. Semplicemente il testo diceva di inserire a piacere un numero arbitrario di numeri razionali e finito l'ultimo inserimento(quindi da qui immagino si evinca debba farlo l'utente) calcolare la somma, la media ed infine stampare eventuali numeri maggiori di 5. Forse per questo mi è stato consigliato ciò perchè magari nella traccia non si faceva riferimento a nessuna classe frazione o chicchessia. Però è anche vero che un numero razionale per definizione è quello formato da numeratore e denominatore così come da un numero decimale. Grazie ancora
  • Re: Numeri razionali e lista - Java

    Weierstrass ha scritto:


    Per il secondo problema puoi iniziare così
    
    import java.io.*;
    import java.util.*;
    
    public class TestList {
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
                System.out.println("Inserisci una sequenza di stringhe:"); 
                String str;
                List<String> lista = new ArrayList<>();
                do{
                    str = br.readLine();
                    if(str.length() > 0)
                        lista.add(str);
                }while(str.length() > 0);	    
                System.out.println("Hai inserito queste stringhe:"); 
                lista.forEach( s -> {System.out.println(s);} );
        }
    }
    

    Grazie mille anche a te Weierstrass Una curiosità. Nel testo non riportava dovessi chiedere all'utente l'inserimento di una stringa. Pensi, pertanto, debba farlo direttamente da programma io? Quindi scrivere ad esempio lista.add("ciao"), lista.add("Oggi gioco a calcio alle 18") e via dicendo. Grazie ancora!
  • Re: Numeri razionali e lista - Java

    Luca Mano ha scritto:


    In realtà non si tratta di esercizi con frazioni e quindi implementare una classe frazione. Semplicemente il testo diceva di inserire a piacere un numero arbitrario di numeri razionali e finito l'ultimo inserimento(quindi da qui immagino si evinca debba farlo l'utente) calcolare la somma, la media ed infine stampare eventuali numeri maggiori di 5.
    Allora, detto così, si tratta solo di chiedere in input: numeratore1, denominatore1 (e ti calcoli il valore in double) ....ecc... numeratoreN, denominatoreN (e ti calcoli il valore in double) e man mano sommi e alla fine calcoli anche la media (somma/conteggio). Tutto qui.

    Bisogna solo vedere QUANDO si vuole terminare, cioè se chiedi all'inizio quanti numeri razionali inserire o se chiedi se proseguire sì/no ogni volta o se c'è un valore particolare che fa da terminatore. Questo è a scelta ...
  • Re: Numeri razionali e lista - Java

    Luca Mano ha scritto:


    Weierstrass ha scritto:


    Per il secondo problema puoi iniziare così
    
    import java.io.*;
    import java.util.*;
    
    public class TestList {
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
                System.out.println("Inserisci una sequenza di stringhe:"); 
                String str;
                List<String> lista = new ArrayList<>();
                do{
                    str = br.readLine();
                    if(str.length() > 0)
                        lista.add(str);
                }while(str.length() > 0);	    
                System.out.println("Hai inserito queste stringhe:"); 
                lista.forEach( s -> {System.out.println(s);} );
        }
    }
    
    Per l'altro punto: stai molto attanto ad usare i double per sommare dei razionali, rischi di fare disastri. E' strano che l'esercizio parli espressamente di "razionali" se poi puoi usare i double


    Grazie mille anche a te Weierstrass Una curiosità. Nel testo non riportava dovessi chiedere all'utente l'inserimento di una stringa. Pensi, pertanto, debba farlo direttamente da programma io? Quindi scrivere ad esempio lista.add("ciao"), lista.add("Oggi gioco a calcio alle 18") e via dicendo. Grazie ancora!
    Puoi fare quello che vuoi, anzi era la cosa che ti consigliava migliorabile
    Puoi farlo in tanti modi, anche così:
    
                ArrayList<String> lista =  new ArrayList<>(Arrays.asList(
                        "ciao", 
                        "Oggi gioco a calcio alle 18",
                        "... e via dicendo"
                ));
    
    Per l'altro punto: stai molto attanto ad usare i double per sommare dei razionali, rischi di fare disastri. E' strano che l'esercizio parli espressamente di "razionali" se poi puoi usare i double
  • Re: Numeri razionali e lista - Java

    Weierstrass ha scritto:


    Luca Mano ha scritto:


    Weierstrass ha scritto:


    Per il secondo problema puoi iniziare così
    
    import java.io.*;
    import java.util.*;
    
    public class TestList {
        public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
                System.out.println("Inserisci una sequenza di stringhe:"); 
                String str;
                List<String> lista = new ArrayList<>();
                do{
                    str = br.readLine();
                    if(str.length() > 0)
                        lista.add(str);
                }while(str.length() > 0);	    
                System.out.println("Hai inserito queste stringhe:"); 
                lista.forEach( s -> {System.out.println(s);} );
        }
    }
    
    Per l'altro punto: stai molto attanto ad usare i double per sommare dei razionali, rischi di fare disastri. E' strano che l'esercizio parli espressamente di "razionali" se poi puoi usare i double


    Grazie mille anche a te Weierstrass Una curiosità. Nel testo non riportava dovessi chiedere all'utente l'inserimento di una stringa. Pensi, pertanto, debba farlo direttamente da programma io? Quindi scrivere ad esempio lista.add("ciao"), lista.add("Oggi gioco a calcio alle 18") e via dicendo. Grazie ancora!
    Puoi fare quello che vuoi, anzi era la cosa che ti consigliava migliorabile
    Puoi farlo in tanti modi, anche così:
    
                ArrayList<String> lista =  new ArrayList<>(Arrays.asList(
                        "ciao", 
                        "Oggi gioco a calcio alle 18",
                        "... e via dicendo"
                ));
    
    Per l'altro punto: stai molto attanto ad usare i double per sommare dei razionali, rischi di fare disastri. E' strano che l'esercizio parli espressamente di "razionali" se poi puoi usare i double
    Per la lista farò così allora, pomeriggio mi metto subito in moto. Per l'altro punto, invece, ho scelto io di usare double perchè durante la divisione di un numeratore e denominatore ovviamente capita abbia dei numeri con la virgola. Sbaglio allora? Tra float e double ho preferito quest'ultimo essendo più preciso.
  • Re: Numeri razionali e lista - Java

    andbin ha scritto:


    Luca Mano ha scritto:


    In realtà non si tratta di esercizi con frazioni e quindi implementare una classe frazione. Semplicemente il testo diceva di inserire a piacere un numero arbitrario di numeri razionali e finito l'ultimo inserimento(quindi da qui immagino si evinca debba farlo l'utente) calcolare la somma, la media ed infine stampare eventuali numeri maggiori di 5.
    Allora, detto così, si tratta solo di chiedere in input: numeratore1, denominatore1 (e ti calcoli il valore in double) ....ecc... numeratoreN, denominatoreN (e ti calcoli il valore in double) e man mano sommi e alla fine calcoli anche la media (somma/conteggio). Tutto qui.

    Bisogna solo vedere QUANDO si vuole terminare, cioè se chiedi all'inizio quanti numeri razionali inserire o se chiedi se proseguire sì/no ogni volta o se c'è un valore particolare che fa da terminatore. Questo è a scelta ...
    Immaginavo Quindi posso implementare la mia soluzione magari migliorata e rivista. Comunque si, inizialmente chiederei quanti numeri abbia intenzione di processare e da lì poi chiederei tante coppie numeratore/denominatore quante sono i numeri da ottenere per poi fare il resto. Gentilissimo e grazie ancora
  • Re: Numeri razionali e lista - Java

    Io credo che l'esercizio sia proprio quello di crearsi la classe Rational, che è un classico per chi impara Java.
    Per le controindicazioni dei double, lascio a te la ricerca
  • Re: Numeri razionali e lista - Java

    non si tratta di esercizi con frazioni e quindi implementare una classe frazione
    Questo lo SPERI tu

    Come dice correttamente @Weierstrass, NON AVREBBE SENSO parlare di numeri ""razionali"" se poi devi usare i numeri ""reali"".

    Tanto valeva lavorare DIRETTAMENTE con gli interi.

    Puoi fare come vuoi, ovviamente, MA il testo dell'esercizio parla chiaro.

    Se uno ti chiede di dipingere una parete di giallo, MICA ti deve ANCHE dire che lo devi fare acquistando il colore GIALLO e il rullo!!!
    Lo devi sapere gia' TU!
Devi accedere o registrarti per scrivere nel forum
12 risposte