Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 line
1.1KB

  1. #include "fcpp.hh"
  2. struct Rational {
  3. int zaehler;
  4. int nenner;
  5. } ;
  6. // Abstraktion: Konstruktor und Selektoren
  7. Rational erzeuge_rat (int z, int n)
  8. {
  9. Rational t;
  10. t.zaehler = z;
  11. t.nenner = n;
  12. return t;
  13. }
  14. int zaehler (Rational q)
  15. {
  16. return q.zaehler;
  17. }
  18. int nenner (Rational q)
  19. {
  20. return q.nenner;
  21. }
  22. // Arithmetische Operationen
  23. Rational add_rat (Rational p, Rational q)
  24. {
  25. return erzeuge_rat(
  26. zaehler(p)*nenner(q)+zaehler(q)*nenner(p),
  27. nenner(p)*nenner(q));
  28. }
  29. Rational sub_rat (Rational p, Rational q)
  30. {
  31. return erzeuge_rat(
  32. zaehler(p)*nenner(q)-zaehler(q)*nenner(p),
  33. nenner(p)*nenner(q));
  34. }
  35. Rational mul_rat (Rational p, Rational q)
  36. {
  37. return erzeuge_rat(zaehler(p)*zaehler(q),
  38. nenner(p)*nenner(q));
  39. }
  40. Rational div_rat (Rational p, Rational q)
  41. {
  42. return erzeuge_rat(zaehler(p)*nenner(q),
  43. nenner(p)*zaehler(q));
  44. }
  45. void drucke_rat (Rational p)
  46. {
  47. print(zaehler(p),"/",nenner(p),0);
  48. }
  49. int main ()
  50. {
  51. Rational p = erzeuge_rat(3,4);
  52. Rational q = erzeuge_rat(5,3);
  53. drucke_rat(p); drucke_rat(q);
  54. // p*q+p-p*p
  55. Rational r = sub_rat(add_rat(mul_rat(p,q), p),
  56. mul_rat(p,p));
  57. drucke_rat(r);
  58. return 0;
  59. }