Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Programma che calcola le operazioni fra frazioni
Forum - C/C++ - Programma che calcola le operazioni fra frazioni

Avatar
The Face (Normal User)
Rookie


Messaggi: 22
Iscritto: 29/09/2011

Segnala al moderatore
Postato alle 17:31
Martedì, 14/02/2012
Salve, sto creando un programma che permette di calcolare le operazioni di somma, sottrazione, moltiplicazione e divisione tra due frazioni
il codice è questo:



#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

{int n1, n2, d1, d2, ok, x, nr, dr;

printf("calcolo aritmetico di frazioni;\b");
do
  {
    printf("inserisci il numeratore della prima frazione:\n");
    scanf("%d", &n1);
    printf("Inserisci il denominatore della prima frazione\n");
    scanf("%d", &d1);
    printf("la frazione e': %d\\%d\n\n", n1, d1);
    ok = 0;

       if ((n1 == 0) || (d1 == 0))
       {printf("il numeratore non puo' essere uguale a zero\n\n");
        ok = 1;
       }
       else
       {
        printf("Inserisci il numeratore della seconda frazione\n");
          scanf("%d", &n2);
          printf("Inserisci il denominatore della seconda frazione\n");
          scanf("%d", &d2);
          printf("la frazione e': %d\\%d\n\n", n2, d2);
      
          if ((n2 == 0) || (d2 == 0))
           {printf("il numeratore non puo' essere uguale a zero\n\n");
        ok = 1;
        }
        else
        {
           printf("premere 1,2,3,4 per scegliere quale operazione si vuole eseguire.\n\n somma = 1\n\n differenza = 2\n\n moltiplicazione = 3\n\n divisione = 4\n\n");
           scanf("%d", &x);
           switch (x)
               {case 1:
                nr = (n1 * d2 + n2 * d1);
                dr = (d1 * d2);
            case 2:
                nr = (n1 * d2 - n2 * d1);
                dr = (d1 * d2);
            case 3:
                nr = n1 * n2;
                dr = d1 * d2;
            case 4:
                nr = n1 * d2;
                dr = n2 * d1;
            }
            
            printf("il risultato e': %d\\%d\n\n", nr, dr);
        }
       }            
   }
while (ok == 1);
  
  system("PAUSE");    
  return 0;
}




Il problema è che se provassi a scrivere
n1=5
d1=6
n2=3
d2=4
e poi premessi 3 per moltiplicare, dovrebbe scrivere come risultato 15/20. Invece appare 20/18, e il bello è che risulta così anche se chiedessi al programma di sommare, sottrarre o dividere (sempre con 5/6 e 3/4)! La stessa cosa succede con altre frazioni: mi da lo stesso risultato, e pure sbagliato, per tutte le operazioni (+, -, x, /). Se riuscite a trovare l'errore vi chiedo di riferirmelo
Un grazie in anticipo :D


Il Pixel vivente
PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 17:39
Martedì, 14/02/2012
Hai dimenticato break alla fine di ogni case.
5/6 * 3/4 fa 15/24


Principali interessi: Compilatori e generatori di parser.
PM Quote
Avatar
The Face (Normal User)
Rookie


Messaggi: 22
Iscritto: 29/09/2011

Segnala al moderatore
Postato alle 17:57
Martedì, 14/02/2012
Ho sbagliato a scrivere 20 perché ho scritto velocemente e non me ne sono accorto :rofl:
comunque grazie mille :D


Il Pixel vivente
PM Quote