Ένας ρητός αριθμός ορίζεται ως το πηλίκο δύο ακεραίων a και b, που ονομάζονται αριθμητής και παρονομαστής αντίστοιχα, όπου b != 0.
Η απόλυτη τιμή |r| του ρητού αριθμού r = a/b είναι ίση με |a|/|b|.
Το άθροισμα δύο ρητών αριθμών r₁ = a₁/b₁ και r₂ = a₂/b₂ είναι r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).
Η διαφορά δύο ρητών αριθμών r₁ = a₁/b₁ και r₂ = a₂/b₂ είναι r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).
Το γινόμενο (πολλαπλασιασμός) δύο ρητών αριθμών r₁ = a₁/b₁ και r₂ = a₂/b₂ είναι r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).
Η διαίρεση ενός ρητού αριθμού r₁ = a₁/b₁ με έναν άλλον r₂ = a₂/b₂ είναι r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁) αν το a₂ δεν είναι μηδέν.
Η ύψωση ενός ρητού αριθμού r = a/b σε μη αρνητική ακέραια δύναμη n είναι r^n = (a^n)/(b^n).
Η ύψωση ενός ρητού αριθμού r = a/b σε αρνητική ακέραια δύναμη n είναι r^n = (b^m)/(a^m), όπου m = |n|.
Η ύψωση ενός ρητού αριθμού r = a/b σε πραγματικό αριθμό (κινητής υποδιαστολής) x είναι το πηλίκο (a^x)/(b^x), που είναι πραγματικός αριθμός.
Η ύψωση ενός πραγματικού αριθμού x σε ρητό αριθμό r = a/b είναι x^(a/b) = root(x^a, b), όπου root(p, q) είναι η q-οστή ρίζα του p.
Υλοποίησε τις παρακάτω πράξεις:
Οι ρητοί αριθμοί στην υλοποίησή σου θα πρέπει πάντα να ανάγονται σε ελάχιστους όρους. Για παράδειγμα, το 4/4 θα πρέπει να ανάγεται σε 1/1, το 30/60 θα πρέπει να ανάγεται σε 1/2, το 12/8 θα πρέπει να ανάγεται σε 3/2, κ.λπ. Για να ανάγεις έναν ρητό αριθμό r = a/b, διαίρεσε το a και το b με τον μέγιστο κοινό διαιρέτη (ΜΚΔ) των a και b. Έτσι, για παράδειγμα, gcd(12, 8) = 4, άρα το r = 12/8 μπορεί να αναχθεί σε (12/4)/(8/4) = 3/2.
Υπόθεσε ότι η γλώσσα προγραμματισμού που χρησιμοποιείς δεν έχει υλοποίηση ρητών αριθμών.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Delphi Pascal με 76 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.