60 lines
861 B
C++
60 lines
861 B
C++
int Rational::numerator () {
|
|
return n;
|
|
}
|
|
|
|
int Rational::denominator () {
|
|
return d;
|
|
}
|
|
|
|
void Rational::print () {
|
|
::print(n,"/",d,0);
|
|
}
|
|
|
|
// ggT zum kuerzen
|
|
int Rational::ggT (int a, int b) {
|
|
return (b==0) ? a : ggT(b,a%b);
|
|
}
|
|
|
|
// Konstruktoren
|
|
Rational::Rational (int num, int denom)
|
|
{
|
|
int t = ggT(num,denom);
|
|
if (t!=0)
|
|
{
|
|
n=num/t;
|
|
d=denom/t;
|
|
}
|
|
else
|
|
{
|
|
n = num;
|
|
d = denom;
|
|
}
|
|
}
|
|
|
|
Rational::Rational (int num) {
|
|
n=num;
|
|
d=1;
|
|
}
|
|
|
|
Rational::Rational () {
|
|
n=0;
|
|
d=1;
|
|
}
|
|
|
|
// Operatoren
|
|
Rational Rational::operator+ (Rational q) {
|
|
return Rational(n*q.d+q.n*d,d*q.d);
|
|
}
|
|
|
|
Rational Rational::operator- (Rational q) {
|
|
return Rational(n*q.d-q.n*d, d*q.d);
|
|
}
|
|
|
|
Rational Rational::operator* (Rational q) {
|
|
return Rational(n*q.n, d*q.d);
|
|
}
|
|
|
|
Rational Rational::operator/ (Rational q) {
|
|
return Rational(n*q.d,d*q.n);
|
|
}
|