Eine rationale Zahl ist als der Quotient zweier Ganzzahlen a und b definiert, die man Zähler bzw. Nenner nennt, wobei b != 0 gilt.
Der Betrag |r| der rationalen Zahl r = a/b ist gleich |a|/|b|.
Die Summe zweier rationaler Zahlen r₁ = a₁/b₁ und r₂ = a₂/b₂ ist r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).
Die Differenz zweier rationaler Zahlen r₁ = a₁/b₁ und r₂ = a₂/b₂ ist r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).
Das Produkt (Multiplikation) zweier rationaler Zahlen r₁ = a₁/b₁ und r₂ = a₂/b₂ ist r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).
Die Division einer rationalen Zahl r₁ = a₁/b₁ durch eine andere r₂ = a₂/b₂ ergibt r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁), wenn a₂ nicht null ist.
Das Potenzieren einer rationalen Zahl r = a/b mit einer nicht-negativen ganzzahligen Potenz n ergibt r^n = (a^n)/(b^n).
Das Potenzieren einer rationalen Zahl r = a/b mit einer negativen ganzzahligen Potenz n ergibt r^n = (b^m)/(a^m), wobei m = |n|.
Das Potenzieren einer rationalen Zahl r = a/b mit einer reellen Zahl x (Gleitkommazahl) ist der Quotient (a^x)/(b^x), der eine reelle Zahl ist.
Das Potenzieren einer reellen Zahl x mit einer rationalen Zahl r = a/b ergibt x^(a/b) = root(x^a, b), wobei root(p, q) die q-te Wurzel von p ist.
Implementiere die folgenden Operationen:
Deine Implementierung rationaler Zahlen sollte immer vollständig gekürzt sein. Zum Beispiel sollte 4/4 zu 1/1 gekürzt werden, 30/60 zu 1/2, 12/8 zu 3/2, usw. Um eine rationale Zahl r = a/b zu kürzen, dividiere a und b durch den größten gemeinsamen Teiler (ggT) von a und b. Zum Beispiel ist gcd(12, 8) = 4, also kann r = 12/8 zu (12/4)/(8/4) = 3/2 gekürzt werden.
Geh davon aus, dass die Programmiersprache, die du verwendest, keine Implementierung rationaler Zahlen hat.
Melde dich bei Exercism an, um Delphi Pascal mit 76 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.