martedì 7 gennaio 2014

Calcolatrice per Frazioni - Correzio Verifica

Scrivere un programma che, inseriti dall'utente due frazioni ne esegua somma,sottrazione, moltiplicazione e divisione. L'utente dovrà avere la possibilità di scegliere che tipo di operazione effettuare sui dati inseriti tramite un menù.
Si richiede di utilizzare procedure e funzioni per risolvere l'esercizio.

Formula per Somma tra Frazioni: ((a*d)+(b*c))/(b*d)
Formula per Sottrazione tra Frazioni: ((a*d)-(b*c))/(b*d)
Formula per Moltiplicazione tra Frazioni: (a*c)/(b*d)

Formula per Divisione tra Frazioni: (a*d)/(b*c)

Diagramma di flusso in Algobuild:


Codice in C++ :

# include <stdio.h>

int numeratoreA;
int denominatoreA;
int numeratoreB;
int denominatoreB;
int menu;
int numeratore;
int denominatore;
int SommaNum (int a, int b, int c, int d);
int SommaDen (int a, int b, int c, int d);
int SottrazioneNum (int a, int b, int c, int d);
int SottrazioneDen (int a, int b, int c, int d);
int MoltiplicazioneNum (int a, int b, int c, int d);
int MoltiplicazioneDen (int a, int b, int c, int d);
int DivisioneNum (int a, int b, int c, int d);
int DivisioneDen (int a, int b, int c, int d);

int main()
{
    printf("\tCalcolatrice tra Frazioni");
    do{
       printf("\n\nMENU: quale operazione vuoi effettuare?");
       printf("\n1) Somma\n2) Sottrazione\n3) Moltiplicazione\n4) Divisione\n5) Esci\n");
       scanf("%d",&menu);
       if((menu>0)&&(menu<5))
       {
            printf("Inserisci il NUMERATORE della PRIMA frazione");
            scanf("%d",&numeratoreA);
            do
            {
printf("Inserisci il DENOMINATORE della PRIMA frazione");
            scanf("%d",&denominatoreA);
            if(denominatoreA==0)
            printf("\n\n\tIl valore denominatore non puo' essere uguale a 0\n\n");
            }while(denominatoreA==0);
            printf("Inserisci il NUMERATORE della SECONDA frazione");
            scanf("%d",&numeratoreB);
            do
            {
            printf("Inserisci il DENOMINATORE della SECONDA frazione");
            scanf("%d",&denominatoreB);
            if(denominatoreB==0)
            printf("\n\n\tIl valore denominatore non puo' essere uguale a 0\n\n");
            }while(denominatoreB==0);
       }
       switch(menu)
       {
           case 1: numeratore=SommaNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=SommaDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato dell'addizione e': %d / %d ",numeratore,denominatore);
                   break;
           case 2: numeratore=SottrazioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=SottrazioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della sottrazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 3: numeratore=MoltiplicazioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=MoltiplicazioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della moltiplicazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 4: numeratore=DivisioneNum(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   denominatore=DivisioneDen(numeratoreA, denominatoreA, numeratoreB, denominatoreB);
                   printf("Il risultato della moltiplicazione e': %d / %d ",numeratore,denominatore);
                   break;
           case 5: printf("Fine");
                   break;
           default: printf("\tInserire un numero tra 1 e 5\n");    
       }
    }while(menu!=5);
}

int SommaNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=((a*d)+(b*c));
    return numeratore;
}

int SommaDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int SottrazioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=((a*d)-(b*c));
    return numeratore;
}

int SottrazioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int MoltiplicazioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=(a*c);
    return numeratore;
}

int MoltiplicazioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*d);
    return denominatore;
}

int DivisioneNum(int a, int b, int c, int d)
{
    int numeratore;
    numeratore=(a*d);
    return numeratore;
}

int DivisioneDen(int a, int b, int c, int d)
{
    int denominatore;
    denominatore=(b*c);
    return denominatore;
}

Descrizione e scopo delle variabili utilizzate:


numeratoreA - INPUT: viene salvato il valore inserito dall’utente come numeratore della prima frazione.
denominatoreA – INPUT: viene salvato il valore inserito dall’utente come denominatore della prima frazione.
numeratoreB - INPUT: viene salvato il valore inserito dall’utente come numeratore della seconda frazione.
denominatoreB – INPUT: viene salvato il valore inserito dall’utente come denominatore della seconda frazione.
Menu – INPUT: viene salvato il valore inserito dall’utente per la scelta dell’operazione da eseguire sulle frazioni.

numeratore – OUTPUT: variabile che intercetta il risultato della funzione SommaNum e viene utilizzato per visualizzare il numeratore risultato della somma tra due frazioni.
denominatore – OUTPUT: variabile che intercetta il risultato della funzione SommaDen e viene utilizzato per visualizzare il denominatore risultato della somma tra due frazioni.

A – LAVORO: variabile che con passaggio di parametro assume il valore numeratoreA all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
B – LAVORO: variabile che con passaggio di parametro assume il valore denominatoreA all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
C – LAVORO: variabile che con passaggio di parametro assume il valore numeratoreB all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
D – LAVORO: variabile che con passaggio di parametro assume il valore denominatoreB all’interno della relativa funzione di Somma, Sottrazione, Moltiplicazione, Divisione.
Numeratore (locale) – LAVORO: variabile locale all’interno delle funzioni di SommaNum, SottrazioneNum, MoltiplicazioneNum, DivisioneNum.

Denominatore (locale) – LAVORO: variabile locale all’interno delle funzioni di SommaDen, SottrazioneDen, MoltiplicazioneDen, DivisioneDen.


Nessun commento:

Posta un commento