-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPOO_fraccion.cpp
More file actions
75 lines (73 loc) · 2.65 KB
/
POO_fraccion.cpp
File metadata and controls
75 lines (73 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include<iostream>
using namespace std;
int gcd (int a, int b) {
while (b) {
a %= b;
swap(a, b);
}
return a;
}
class fraccion{
private:
int numerador;
int denominador;
public:
fraccion(int n = 0, int d = 1);
fraccion operator+(const fraccion& f) const;
fraccion operator-(const fraccion& f) const;
fraccion operator*(const fraccion& f) const;
fraccion operator/(const fraccion& f) const;
void mostrar() const;
};
//Inicializa y crea una fracción reducida
fraccion::fraccion(int n, int d) : numerador(n), denominador(d){
int mcd = gcd(numerador, denominador);
numerador = numerador / mcd;
denominador = denominador / mcd;
}
//Sobrecargar los operadores
fraccion fraccion::operator+(const fraccion& seguna_fraccion) const{
fraccion resultado;
resultado.numerador = (numerador * seguna_fraccion.denominador) + (seguna_fraccion.numerador * denominador);
resultado.denominador = (denominador * seguna_fraccion.denominador);
int mcd = gcd(resultado.numerador, resultado.denominador);
resultado.numerador = resultado.numerador / mcd;
resultado.denominador = resultado.denominador / mcd;
return resultado;
}
fraccion fraccion::operator-(const fraccion& seguna_fraccion) const{
fraccion resultado;
resultado.numerador = (numerador * seguna_fraccion.denominador) - (seguna_fraccion.numerador * denominador);
resultado.denominador = (denominador * seguna_fraccion.denominador);
int mcd = gcd(resultado.numerador, resultado.denominador);
resultado.numerador = resultado.numerador / mcd;
resultado.denominador = resultado.denominador / mcd;
return resultado;
}
fraccion fraccion::operator*(const fraccion& seguna_fraccion) const{
fraccion resultado;
resultado.numerador = (numerador * seguna_fraccion.numerador);
resultado.denominador = (denominador * seguna_fraccion.denominador);
int mcd = gcd(resultado.numerador, resultado.denominador);
resultado.numerador = resultado.numerador / mcd;
resultado.denominador = resultado.denominador / mcd;
return resultado;
}
fraccion fraccion::operator/(const fraccion& seguna_fraccion) const{
fraccion resultado;
resultado.numerador = (numerador * seguna_fraccion.denominador);
resultado.denominador = (denominador * seguna_fraccion.numerador);
int mcd = gcd(resultado.numerador, resultado.denominador);
resultado.numerador = resultado.numerador / mcd;
resultado.denominador = resultado.denominador / mcd;
return resultado;
}
void fraccion::mostrar() const{
cout << endl << numerador << "/" << denominador << endl;
}
int main(){
fraccion f1(4,5);
fraccion f2(1,10);
fraccion f3 = f1 + f2;
f3.mostrar();
}