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
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;
}
solo che durante la compilazione mi da un errore in double confronto (int x, int y, int z, int w).
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.