#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; }