- 70
- 2
- CPU
- intel core i5-2310m
- HDD
- 1TB Western digital 5400rpm
- RAM
- 8gb ddr3
- GPU
- amd ati 7310m
- Monitor
- samsung E2220
- OS
- Windows 7; ubuntu 14.04; Kali linux; debian 7
Sto iniziando a studiare programmazione ad oggetti e sto facendo per esercizio una classe "razionale", per le operazioni su numeri razionali in forma di frazioni.
Tra i vari metodi ce ne sono due (somma e moltiplicazione) che io ho implementato così:
Ora, visto che ho anche un metodo "riduci", per la riduzione ai minimi termini delle frazioni:
vorrei sapere se è possibile collegare i metodi "somma" e "riduci", "moltiplica" e "riduci"; tale da avere il risultato di somma e moltiplicazione già ridotto ai minimi termini; in modo da avere un main del tipo:
Tra i vari metodi ce ne sono due (somma e moltiplicazione) che io ho implementato così:
Codice:
razionale razionale::moltiplica(const razionale& r)
{
cout<<r.numeratore*numeratore<<"/"<<r.denominatore*denominatore<<endl;
}
razionale razionale::somma(const razionale& r)
{
int sn;
int sd;
sn=(r.numeratore*denominatore)+(r.denominatore*numeratore);
sd=(r.denominatore*denominatore);
cout<<sn<<"/"<<sd<<endl;
}
Codice:
int main()
{
razionale r3 (1, 4);
razionale r4(1, 5);
razionale r6(5, 6);
razionale r7(7, 8);
r6.moltiplica(r7);
r3.somma(r4);
return 0;
}
Ora, visto che ho anche un metodo "riduci", per la riduzione ai minimi termini delle frazioni:
Codice:
int MCD (int n, int d)
{
int resto = d;
while (resto != 0)
{
resto = n % d;
n = d;
d = resto;
}
return n;
}
void razionale::riduci()
{
int a=MCD(numeratore, denominatore);
cout<<numeratore/a<<"/"<<denominatore/a<<endl;
}
vorrei sapere se è possibile collegare i metodi "somma" e "riduci", "moltiplica" e "riduci"; tale da avere il risultato di somma e moltiplicazione già ridotto ai minimi termini; in modo da avere un main del tipo:
Codice:
int main()
{
razionale r3 (1, 4);
razionale r4(1, 5);
razionale r6(5, 6);
razionale r7(7, 8);
razionale r8;
razionale r9;
r8=r6.moltiplica(r7);
r9=r3.somma(r4);
r8.stampa();
r9.stampa();
return 0;
}