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