Track
/
Roc
Roc
/
Esercizi
/
Numeri razionali
Numeri razionali

Numeri razionali

Medio

Istruzioni

Un numero razionale è definito come il quoziente di due numeri interi a e b, chiamati rispettivamente numeratore e denominatore, dove b != 0.

Note

Nota che, matematicamente, il denominatore non può essere zero. Tuttavia, in molte implementazioni dei numeri razionali, troverai che è consentito che il denominatore sia zero, con un comportamento simile a quello dell'infinito positivo o negativo nei numeri in virgola mobile. In quei casi, il denominatore ed il numeratore generalmente non possono comunque essere entrambi zero allo stesso tempo.

Il valore assoluto |r| del numero razionale r = a/b è uguale a |a|/|b|.

La somma di due numeri razionali r₁ = a₁/b₁ e r₂ = a₂/b₂ è r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).

La differenza di due numeri razionali r₁ = a₁/b₁ e r₂ = a₂/b₂ è r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).

Il prodotto (moltiplicazione) di due numeri razionali r₁ = a₁/b₁ e r₂ = a₂/b₂ è r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).

Dividere un numero razionale r₁ = a₁/b₁ per un altro r₂ = a₂/b₂ dà r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁) se a₂ non è zero.

L'elevamento a potenza di un numero razionale r = a/b ad una potenza intera non negativa n è r^n = (a^n)/(b^n).

L'elevamento a potenza di un numero razionale r = a/b ad una potenza intera negativa n è r^n = (b^m)/(a^m), dove m = |n|.

L'elevamento a potenza di un numero razionale r = a/b ad un numero reale (in virgola mobile) x è il quoziente (a^x)/(b^x), che è un numero reale.

L'elevamento a potenza di un numero reale x ad un numero razionale r = a/b è x^(a/b) = root(x^a, b), dove root(p, q) è la radice q-esima di p.

Implementa le seguenti operazioni:

  • addizione, sottrazione, moltiplicazione e divisione di due numeri razionali,
  • valore assoluto, elevamento a potenza di un dato numero razionale ad una potenza intera, elevamento a potenza di un dato numero razionale ad una potenza reale (in virgola mobile), elevamento a potenza di un numero reale ad un numero razionale.

L'implementazione dei numeri razionali dovrebbe sempre essere ridotta ai minimi termini. Per esempio, 4/4 dovrebbe ridursi a 1/1, 30/60 dovrebbe ridursi a 1/2, 12/8 dovrebbe ridursi a 3/2, ecc. Per ridurre un numero razionale r = a/b, dividi a e b per il massimo comun divisore (gcd) di a e b. Quindi, per esempio, gcd(12, 8) = 4, per cui r = 12/8 può essere ridotto a (12/4)/(8/4) = 3/2. La forma ridotta di un numero razionale dovrebbe essere in «forma standard» (il denominatore dovrebbe sempre essere un numero intero positivo). Se è presente un denominatore con un numero intero negativo, moltiplica sia il numeratore sia il denominatore per -1 per garantire che si raggiunga la forma standard. Per esempio, 3/-4 dovrebbe essere ridotto a -3/4

Presumi che il linguaggio di programmazione che stai usando non abbia un'implementazione dei numeri razionali.

Gli operatori dei numeri razionali

Le funzioni aritmetiche supportano le normali chiamate di funzione, il dispatch statico (cioè la sintassi di chiamata di metodo) e gli operatori:

Chiamata di funzione Chiamata di metodo Operatore
plus(r1, r2) r1.plus(r2) r1 + r2
minus(r1, r2) r1.minus(r2) r1 - r2
times(r1, r2) r1.times(r2) r1 * r2
div_by(r1, r2) r1.div_by(r2) r1 / r2

Implementa reduce per ridurre un numero razionale ai minimi termini, per esempio da 6 / 8 a 3 / 4.


Fonte

WikipediaIl link si apre in una nuova finestra o scheda
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Roc Exercism

Vuoi iniziare Numeri razionali?

Iscriviti a Exercism per imparare e padroneggiare Roc con 135 esercizi e il mentoring di persone reali, tutto gratis.