73 lines
1.1 KiB
C++
73 lines
1.1 KiB
C++
#include "fcpp.hh"
|
|
|
|
struct Rational {
|
|
int zaehler;
|
|
int nenner;
|
|
} ;
|
|
|
|
// Abstraktion: Konstruktor und Selektoren
|
|
|
|
Rational erzeuge_rat (int z, int n)
|
|
{
|
|
Rational t;
|
|
t.zaehler = z;
|
|
t.nenner = n;
|
|
return t;
|
|
}
|
|
|
|
int zaehler (Rational q)
|
|
{
|
|
return q.zaehler;
|
|
}
|
|
|
|
int nenner (Rational q)
|
|
{
|
|
return q.nenner;
|
|
}
|
|
|
|
// Arithmetische Operationen
|
|
|
|
Rational add_rat (Rational p, Rational q)
|
|
{
|
|
return erzeuge_rat(
|
|
zaehler(p)*nenner(q)+zaehler(q)*nenner(p),
|
|
nenner(p)*nenner(q));
|
|
}
|
|
|
|
Rational sub_rat (Rational p, Rational q)
|
|
{
|
|
return erzeuge_rat(
|
|
zaehler(p)*nenner(q)-zaehler(q)*nenner(p),
|
|
nenner(p)*nenner(q));
|
|
}
|
|
|
|
Rational mul_rat (Rational p, Rational q)
|
|
{
|
|
return erzeuge_rat(zaehler(p)*zaehler(q),
|
|
nenner(p)*nenner(q));
|
|
}
|
|
|
|
Rational div_rat (Rational p, Rational q)
|
|
{
|
|
return erzeuge_rat(zaehler(p)*nenner(q),
|
|
nenner(p)*zaehler(q));
|
|
}
|
|
|
|
void drucke_rat (Rational p)
|
|
{
|
|
print(zaehler(p),"/",nenner(p),0);
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
Rational p = erzeuge_rat(3,4);
|
|
Rational q = erzeuge_rat(5,3);
|
|
drucke_rat(p); drucke_rat(q);
|
|
|
|
// p*q+p-p*p
|
|
Rational r = sub_rat(add_rat(mul_rat(p,q), p),
|
|
mul_rat(p,p));
|
|
drucke_rat(r);
|
|
return 0;
|
|
}
|