Buon pomeriggio,
sono alle prese con la compilazione di un porgramma che dovrebbe fare tali cose: "Date due frazioni, espresse nella forma di due coppie di numeri interi positivi < num1; den1 >,
e < num2; den2 > , de¯nire una funzione che, senza l'uso della divisione reale (cioe' tra
numeri in virgola mobile) restituisca:
² 1 o 2 per segnalare quale delle due frazioni e' maggiore dell'altra
² una terza frazione < num3; den3 > pari alla piu' grande delle due, ridotta ai minimi
termini
Ad esempio la funzione dovr restituire 2 se le frazioni in ingresso sono < 1; 3 > e < 5; 10 >,
con l'assegamento alla terza frazione < num3; den3 > della coppia < 1; 2 >"
Io avrei scritto il programma in questo modo
solo che durante la compilazione mi da un errore in double confronto (int x, int y, int z, int w).codice:#include <iostream> #include <cmath> using namespace std; double MCD (int num, int den) { int MCD; int r = num % den; if (r == 0) { MCD = den; cout << "Il MCD e' "<< MCD <<" \n"; } else { while (r != 0) { num = den; den = r; r = num % den; } MCD = den; cout << "il MCD e' "<< MCD <<" \n"; } } double confronto (int x, int y, int z, int w) { int maggiore; //maggiore è la variabile che indica la frazione maggiore tra le due\\ if(x * w > z * y) { maggiore = 1; cout<< "La frazione maggiore e' la prima " << maggiore << "\n"; } else if(x * w < z * y) { maggiore = 2; cout << "La frazione maggiore e' la seconda " << maggiore; } int main() { int a, b, c, d; cout << "Inserisci numeratore 1 \n"; cin >> a; cout << "Inserisci denominatore 1\n"; cin >> b; cout << "Inserisci numeratore 2 \n"; cin >> c; cout << "Inserisci denominatore 2 \n"; cin >> d; confronto (a, b, c, d); if (maggiore = 1) { MCD (a, b); } else MCD (c, d); system("pause"); return 0; }
Non chiedo la soluzione, ma solo cercare di capire dov'è l'errore per poi riuscire autonomamente e far funzionare il programma.
Grazie in anticipo per la Vostra collaborazione.

Rispondi quotando