#include #include // For abs function using namespace std; typedef struct { int numeratore; int denominatore; } frazione; frazione somma(frazione frazione1, frazione frazione2); frazione semplificazione(frazione frazione); void stampaFrazione(frazione frazione); int mcd(int a, int b); int main(void) { frazione frazione1; frazione frazione2; cout << "Inserisci il numeratore della prima frazione: "; cin >> frazione1.numeratore; cout << "Inserisci il denominatore della prima frazione: "; cin >> frazione1.denominatore; cout << endl; cout << "Inserisci il numeratore della seconda frazione: "; cin >> frazione2.numeratore; cout << "Inserisci il denominatore della seconda frazione: "; cin >> frazione2.denominatore; cout << endl; cout << "Prima frazione: "; stampaFrazione(frazione1); cout << "Seconda frazione: "; stampaFrazione(frazione2); cout << endl; frazione sommaFrazione = somma(frazione1, frazione2); frazione sommaSemplificata = semplificazione(sommaFrazione); cout << "Somma delle due frazioni semplificata: "; stampaFrazione(sommaSemplificata); return 0; } frazione somma(frazione frazione1, frazione frazione2) { int numeratore = frazione1.numeratore * frazione2.denominatore + frazione2.numeratore * frazione1.denominatore; int denominatore = frazione1.denominatore * frazione2.denominatore; return frazione {numeratore, denominatore}; } frazione semplificazione(frazione frazione) { int gcdValue = mcd(abs(frazione.numeratore), abs(frazione.denominatore)); frazione.numeratore /= gcdValue; frazione.denominatore /= gcdValue; return frazione; } int mcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } void stampaFrazione(frazione frazione) { cout << frazione.numeratore << "/" << frazione.denominatore << endl; }