Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    Frazioni (Java)[Problema]{Esercizio}

    ciao! ho un problema creando un programma in Java per un esercizio scolastico per casa usando netbeans 6.9.1 come abiente di lavoro.
    argomento: frazioni.
    cosa devo fare:
    creare una classe frazione.java con le oportune proprietà e il metodo per semplificare la frazione e il metodo per visualizzare una frazione come testo.
    cosa ho fatto e il problema:
    il metodo per visualizzare la frazione è apposto.
    il metodo della semplificazione è il problema.
    dovrei in pratica semplificare la frazione creata tramite il metodo della visualizzazione se questa è riducibile inoltre devo inserire appunto un messaggio nel caso non sia riducibile
    il problema che non mi ricordo la condizione che fa verificare che una qualsiasi frazione si può definire irriducibile.
    il secondo problema è che non so come tradurre le regole di semplificazione sopratutto come faccio a definire o il numeratore o il denominatore pari, multiplo di 3 o di altri numeri da far in modo che si semplifica in automatico in qualunque caso, e la frazione da riducibile deve trasformarsi in irriducibile.
    come si fa?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come da regolamento non arriva la soluzione all'esercizio, ma ti dò un suggerimento (anche perché io non ho idea di come si faccia): inizia a scrivere su carta cosa faresti se ti dessero da risolvere questo problema con carta e penna, il processo mentale che segui.

    Es. guardi se il numeratore è un multiplo del denominatore, se sono entrambi pari (dividi per due), se puoi dividere per 3 e via di seguito

    Iniziare a scrivere il procedimento a volte dà una mezza idea dell'algoritmo da seguire

  3. #3
    grz x i cosingli. comunque dimenticavo il numetore e il denomitore sono interi perchè il prof vuole che risulti una frazione come rapporto di due numeri interi.

  4. #4
    Per ridurre una frazione ai minimi termini basta calcolare il M.C.D. (Massimo Comune Divisore). Per fare ciò ci viene incontro l'algoritmo Euclideo:
    Dati A e B, calcolare il resto C di A / B, se esso è 0 allora il M.C.D. è B altrimenti porre A = B e B = C e ripetere il procedimento.
    Ho implementato il precedente algoritmo in questo modo:

    codice:
    public int mcd(int a, int b) {
    	int r = a % b;
    	if (r == 0) {
    		return b;
    	}
    	return mcd(b, r); 
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    ciao a tutti mi scuso se non ho risposto prima ma ho risolto il problema e che ho appena avuto la possibilità di usare ora il computer.comunque grazie lo stesso. in parte lo risolto ma mi manca un metodo per fare si che non si verifichi più questo evento:
    ad esempio queste due frazioni. 10/20 e 20/10 tramite il metodo di semplificazione trovo il risultato finale di 1 solo che funziona su la prima ma essendo la seconda l'iversa della prima mi sembra strano che esca lo stesso 1 e comunque dovrebbe uscire 1/2 e 1/5 oppure 0.5 e 0.2 come risultati non 1. come risolvo? per chi volesse la mia soluzione per questo problema:
    codice:
    package frazioni;
    import java.io.PrintStream;
    import java.util.InputMismatchException;
    import java.util.Scanner;
    import javax.swing.JOptionPane;
    public class frazione {
    int numeratore,denominatore;
    static Scanner input = new Scanner(System.in);
    static PrintStream output = new PrintStream (System.out);
    public frazione(int numeratore, int denominatore) {
    this.numeratore = numeratore;
    this.denominatore = denominatore;
    }
    public void calcolaFrazione(){
    try{
    output.println("Numeratore:");
    numeratore = input.nextInt();
    output.println("Denominatore:");
    denominatore = input.nextInt();
    }catch (InputMismatchException exception) {
    JOptionPane.showMessageDialog(null,"inserisci solo valori numerici nel numeratore  e nel denominatore ");
    }
    System.out.println("Frazione:" + "" + numeratore + "" + "/" + "" + denominatore);
    }
    public int calcolaSemplificazione(){
    int x=0,y=0,i,z=2,k,r;
    boolean semplificata = false;
    k= numeratore%z;
    r =denominatore%z;
    if(k==0 && r==0){
    while(!semplificata){
    for( i = z; i>=z;z++){
    x= numeratore/i;
    y=numeratore/i;
    }
    semplificata  = true;   
    }
    return x/y;    
    }else{
    JOptionPane.showMessageDialog(null,"frazione irriducibile ");
    semplificata  =true;
    return numeratore/denominatore;    
    }
    }
    }

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    ad esempio queste due frazioni. 10/20 e 20/10 tramite il metodo di semplificazione trovo il risultato finale di 1 solo che funziona su la prima ma essendo la seconda l'iversa della prima mi sembra strano che esca lo stesso 1 e comunque dovrebbe uscire 1/2 e 1/5 oppure 0.5 e 0.2 come risultati non 1
    Mi sembra che i problemi che incontri vengano da un po' più lontano di Java e della programmazione... Ma hai chiaro cosa è una frazione?
    Una frazione è un modo per rappresentare la divisione fra due numeri. Pertanto:
    10/20, ossia 10 diviso 20, fa 0.5
    20/10, ossia 20 diviso 10, fa 2
    Se esce 1 per entrambi è evidente che c'è qualcosa di sbagliato!

    Non capisco assolutamente cosa faccia il metodo calcolaSemplificazione()... ma quello che riesco a vedere è che non hai seguito quello che ti è stato detto da satifal.
    Quello che deve fare il tuo algoritmo è calcolare il Massimo Comune Divisore fra numeratore e denominatore (usando la funzione che ti è stata fornita): se tale valore è 1, allora la frazione è irriducibile; in caso contrario, dividendo sia il numeratore che il denominatore per questo valore, otterrai la tua frazione ridotta ai minimi termini.

  7. #7
    ...
    Non capisco assolutamente cosa faccia il metodo calcolaSemplificazione()... ma quello che riesco a vedere è che non hai seguito quello che ti è stato detto da satifal.
    Quello che deve fare il tuo algoritmo è calcolare il Massimo Comune Divisore fra numeratore e denominatore (usando la funzione che ti è stata fornita): se tale valore è 1, allora la frazione è irriducibile; in caso contrario, dividendo sia il numeratore che il denominatore per questo valore, otterrai la tua frazione ridotta ai minimi termini.
    La grande utilità dei forum (che ai miei tempi non esistevano) è vanificata dal copia e incolla che porta le persone a non essere in grado di mettere insieme pezzi di codice spesso banali a comporre un programma più complesso. Ormai tutti si aspettano la pappa pronta per intero e non vedono la soluzione che hanno sotto gli occhi quando essa viene fornita soltanto logicamente. Almeno questa è la mia teoria.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Originariamente inviato da desa
    Mi sembra che i problemi che incontri vengano da un po' più lontano di Java e della programmazione... Ma hai chiaro cosa è una frazione?
    Una frazione è un modo per rappresentare la divisione fra due numeri. Pertanto:
    10/20, ossia 10 diviso 20, fa 0.5
    20/10, ossia 20 diviso 10, fa 2
    Se esce 1 per entrambi è evidente che c'è qualcosa di sbagliato!

    Non capisco assolutamente cosa faccia il metodo calcolaSemplificazione()... ma quello che riesco a vedere è che non hai seguito quello che ti è stato detto da satifal.
    Quello che deve fare il tuo algoritmo è calcolare il Massimo Comune Divisore fra numeratore e denominatore (usando la funzione che ti è stata fornita): se tale valore è 1, allora la frazione è irriducibile; in caso contrario, dividendo sia il numeratore che il denominatore per questo valore, otterrai la tua frazione ridotta ai minimi termini.
    grazie comunque per i consigli.

    però:
    1) so bennisimo cos'è una frazione ovvero la rappresentazione di un rapporto tra due numer 2) mi sembra che non ha letto la mia risposta sopratutto quando lo scritta in quanto il codice prodotto da me è stato creato molte ore prima a scuola prima del consiglio di satifal.

  9. #9
    Originariamente inviato da satifal
    La grande utilità dei forum (che ai miei tempi non esistevano) è vanificata dal copia e incolla che porta le persone a non essere in grado di mettere insieme pezzi di codice spesso banali a comporre un programma più complesso. Ormai tutti si aspettano la pappa pronta per intero e non vedono la soluzione che hanno sotto gli occhi quando essa viene fornita soltanto logicamente. Almeno questa è la mia teoria.
    grazie per i cosingli, non pensare che volevo la pappa pronta ma mi serviva solo il simbolo del resto che non mi riccordavo infatti concordo con te, e poi non mi ricordavo le regole che mi avevi detto. infatti il mio codice non contiene in parte i tuoi consigli perchè lo prodotto a scuola.

  10. #10
    ciao a tutti, ho risolto il problema grazie a tutti i consigli in questa discusione. solo che si riscrontano due piccoli problemi uno è normale non uscendo i numeri decimali in virgola mobile i risultati con 0,... escono con 0 è basta. l'atro è che mi esce sempre il messaggio frazione irriducibile anche se questa non lo è.
    non capisco come mai esca forse ho sabalgiato qualcosa nel if che messo io.
    codice:
    package frazioni;
    import java.io.PrintStream;
    import java.util.InputMismatchException;
    import java.util.Scanner;
    import javax.swing.JOptionPane;
    public class frazione {
    int numeratore,denominatore;
    static Scanner input = new Scanner(System.in);
    static PrintStream output = new PrintStream (System.out);
    public frazione(int numeratore, int denominatore) {
    this.numeratore = numeratore;
    this.denominatore = denominatore;
    }
    public void calcolaFrazione(){
    try{
    output.println("Numeratore:");
    numeratore = input.nextInt();
    output.println("Denominatore:");
    denominatore = input.nextInt();
    }catch (InputMismatchException exception) {
    JOptionPane.showMessageDialog(null,"inserisci solo valori numerici nel numeratore  e nel denominatore ");
    }
    System.out.println("Frazione:" + "" + numeratore + "" + "/" + "" + denominatore);
    }
    public int calcolaSemplificazione(){
    int z=calcolaMcd(numeratore,denominatore),x,y;
    boolean semplificata = false;
    x= numeratore/z;
    y =denominatore/z;
    if(x==0 && y==0){
    while(!semplificata){
    for(int i =z ; i>=z;z++){
    x--;
    y--;
    }
    semplificata =true;
    }
    return x/y;
    }else{
    JOptionPane.showMessageDialog(null,"frazione irriducibile ");
    return numeratore/denominatore;    
    }
    }
    public int calcolaMcd(int a, int b) {
    int r = a % b;
    if (r == 0) {
    return b;
    }
    return calcolaMcd(b, r);
    }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.