commit 18d8493e6c87c41733d3543c3d8438bd69597180
parent 3bc4a4252a7b065b551d81ca34c64b414f5b2c7c
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Mon, 20 May 2024 13:26:24 -0300
add `pre` and `post` conditions
Diffstat:
1 file changed, 53 insertions(+), 4 deletions(-)
diff --git a/guias/4/ej02.cpp b/guias/4/ej02.cpp
@@ -6,40 +6,73 @@ int find_gcd(int a, int b) {
}
class Fraction {
+private:
+ int numerator;
+ int divisor;
+
public:
+ /**
+ * post: inicializa la fraccion a `0/1`
+ */
Fraction() {
this->numerator = 0;
this->divisor = 1;
}
+ /**
+ * post: inicializa la fraccion a `numerador/divisor`
+ */
Fraction(int numerator, int divisor) {
this->numerator = numerator;
this->divisor = divisor;
}
+ /**
+ * post: libera la memoria
+ */
virtual ~Fraction() {}
+ /**
+ * post: cambia el numerador de la fraccion a `numerator`
+ */
void setNumerator(int numerator) {
this->numerator = numerator;
}
+ /**
+ * post: cambia el divisor de la fraccion a `divisor`
+ */
void setDivisor(int divisor) {
this->divisor = divisor;
}
+ /**
+ * post: cambia el numerador y divisor de la fraccion a `numerator` y
+ * `divisor` respectivamente
+ */
void set(int numerator, int divisor) {
this->setNumerator(numerator);
this->setDivisor(divisor);
}
+ /**
+ * post: devuelve el numerador de la fracción
+ */
int getNumerator() {
return this->numerator;
}
+ /**
+ * post: devuelve el divisor de la fracción
+ */
int getDivisor() {
return this->divisor;
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: suma los valores de la fracción `f` a la fracción actual
+ */
void add(Fraction f) {
if(this->divisor == f.divisor) {
this->numerator += f.numerator;
@@ -54,6 +87,10 @@ public:
}
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: resta los valores de la fracción `f` a la fracción actual
+ */
void substract(Fraction f) {
if(this->divisor == f.divisor) {
this->numerator -= f.numerator;
@@ -68,29 +105,41 @@ public:
}
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: multiplica los valores de la fracción `f` a la fracción actual
+ */
void multiply(Fraction f) {
this->numerator *= f.numerator;
this->divisor *= f.divisor;
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: divide los valores de la fracción `f` a la fracción actual
+ */
void divide(Fraction f) {
this->numerator *= f.divisor;
this->divisor *= f.numerator;
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: simplifica la fracción a su mínima expresión
+ */
void simplify() {
int gcd = find_gcd(this->numerator, this->divisor);
this->numerator /= gcd;
this->divisor /= gcd;
}
+ /**
+ * pre: la fracción debe estar inicializada
+ * post: imprime el contenido de la fracción
+ */
void print() {
std::cout << this->numerator << "/" << this->divisor << std::endl;
}
-
-private:
- int numerator;
- int divisor;
};
int main (void) {