Tracks
/
Delphi Pascal
Delphi Pascal
/
Ejercicios
/
Números racionales
Números racionales

Números racionales

Intermedia

Instrucciones

Un número racional se define como el cociente de dos números enteros a y b, llamados numerador y denominador, respectivamente, donde b != 0.

El valor absoluto |r| del número racional r = a/b es igual a |a|/|b|.

La suma de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).

La diferencia de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).

El producto (multiplicación) de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).

Dividir un número racional r₁ = a₁/b₁ entre otro r₂ = a₂/b₂ es r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁) si a₂ no es cero.

La exponenciación de un número racional r = a/b a una potencia entera no negativa n es r^n = (a^n)/(b^n).

La exponenciación de un número racional r = a/b a una potencia entera negativa n es r^n = (b^m)/(a^m), donde m = |n|.

La exponenciación de un número racional r = a/b a un número real (de punto flotante) x es el cociente (a^x)/(b^x), que es un número real.

La exponenciación de un número real x a un número racional r = a/b es x^(a/b) = root(x^a, b), donde root(p, q) es la raíz q-ésima de p.

Implementa las siguientes operaciones:

  • suma, resta, multiplicación y división de dos números racionales,
  • valor absoluto, exponenciación de un número racional dado a una potencia entera, exponenciación de un número racional dado a una potencia real (de punto flotante), exponenciación de un número real a un número racional.

Tu implementación de los números racionales siempre debe estar reducida a su mínima expresión. Por ejemplo, 4/4 se debe reducir a 1/1, 30/60 se debe reducir a 1/2, 12/8 se debe reducir a 3/2, etc. Para reducir un número racional r = a/b, divide a y b entre el máximo común divisor (mcd) de a y b. Así, por ejemplo, gcd(12, 8) = 4, así que r = 12/8 se puede reducir a (12/4)/(8/4) = 3/2.

Asume que el lenguaje de programación que usas no tiene una implementación de números racionales.

Instrucciones específicas del track

  • En este ejercicio se introduce la sobrecarga de operadores. La Embarcadero docwiki sobre el tema te será de mucha ayuda para entender cómo es posible sobrescribir los operadores de una clase, junto con el casting Implicit y Explicit.

Fuente

WikipediaEl enlace se abre en una ventana o pestaña nueva
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Delphi Pascal Exercism

¿Todo listo para empezar Números racionales?

Regístrate en Exercism para aprender y dominar Delphi Pascal con 76 ejercicios y mentoría humana real, todo gratis.