24 int gcd = std::gcd(_numerador, _denominador);
27 if (_denominador < 0) {
28 _numerador = -_numerador;
29 _denominador = -_denominador;
39 Fraction(
int num = 1,
int denom = 1) : _numerador(num), _denominador(denom) { simplify(); }
45 std::string toString()
const {
46 std::ostringstream oss;
47 oss << _numerador <<
"/" << _denominador;
55 float getFloatValue()
const {
56 return static_cast<float>(_numerador) /
static_cast<float>(_denominador);
64 void setValues(
const int numerador,
const int denominador) {
65 _numerador = numerador;
66 _denominador = denominador;
75 Fraction operator+(
const Fraction& other)
const {
76 int num = _numerador * other._denominador + other._numerador * _denominador;
77 int denom = _denominador * other._denominador;
78 return Fraction(num, denom);
86 Fraction operator-(
const Fraction& other)
const {
87 int num = _numerador * other._denominador - other._numerador * _denominador;
88 int denom = _denominador * other._denominador;
89 return Fraction(num, denom);
97 Fraction operator*(
const Fraction& other)
const {
98 int num = _numerador * other._numerador;
99 int denom = _denominador * other._denominador;
100 return Fraction(num, denom);
108 Fraction operator/(
const Fraction& other)
const {
109 int num = _numerador * other._denominador;
110 int denom = _denominador * other._numerador;
111 return Fraction(num, denom);
119 Fraction& operator+=(
const Fraction& other) {
120 _numerador = _numerador * other._denominador + other._numerador * _denominador;
121 _denominador = _denominador * other._denominador;
131 Fraction& operator-=(
const Fraction& other) {
132 _numerador = _numerador * other._denominador - other._numerador * _denominador;
133 _denominador = _denominador * other._denominador;
143 Fraction& operator*=(
const Fraction& other) {
144 _numerador *= other._numerador;
145 _denominador *= other._denominador;
155 Fraction& operator/=(
const Fraction& other) {
156 _numerador *= other._denominador;
157 _denominador *= other._numerador;
167 bool operator==(
const Fraction& other)
const {
168 return _numerador == other._numerador && _denominador == other._denominador;
176 bool operator>(
const Fraction& other)
const {
177 return _numerador * other._denominador > other._numerador * _denominador;
185 bool operator>=(
const Fraction& other)
const {
return *
this > other || *
this == other; }
192 bool operator<=(
const Fraction& other)
const {
return !(*
this > other); }
197 void simplifyFraction() { simplify(); }
204 static Fraction stringToFraction(
const std::string& fractionAsString) {
207 std::istringstream iss(fractionAsString);
208 iss >> num >> slash >> denom;
209 return Fraction(num, denom);
218 friend std::ostream& operator<<(std::ostream& os,
const Fraction& fraction) {
219 os << fraction.toString();
229 friend std::istream& operator>>(std::istream& is, Fraction& fraction) {
231 is >> fraction._numerador >> slash >> fraction._denominador;