Definition einer Klasse für rationale Zahlen in Form einer eigenen Headerdatei
#include <iostream> int ggt(int x, int y); class CRZahl // hier wird die Klasse CRZahl implementiert { private: int zaehler,nenner; // Datenelemente public: void eingabe(int z, int n); // Methodenelemente void eingabedez(float r); void ausgabe(); void ausgabedez(); void kuerzen(); void erweitern(int e); }; // Implementation der Methoden der Klasse CRZahl void CRZahl::eingabe(int z, int n) // Methodenelemente {zaehler=z;nenner=n;} void CRZahl::eingabedez(float r) {zaehler=(int)(r*100); nenner=100; kuerzen();} void CRZahl::ausgabe() {std::cout<<zaehler<<"/"<<nenner<<"\n";} void CRZahl::ausgabedez() {printf("%.2f",(float)zaehler/(float)nenner); std::cout<<"\n";} void CRZahl::kuerzen() {int teiler=ggt(zaehler,nenner); zaehler/=teiler; nenner/=teiler;} void CRZahl::erweitern(int e) {zaehler*=e;nenner*=e;} // Implementierung normaler Funktionen int ggt(int x, int y) { while (x!=y) { if (x>y) x=x-y; else if (x<y) y=y-x; } return x; };
Beispeildatei, die die obige Klasse nützt:
//Klassen und Objekte #include <rzahlen.h> main () {CRZahl Bruch; cout<<"Rationale Zahlen\n"; Bruch.eingabe(917,700); Bruch.ausgabe(); Bruch.kuerzen(); Bruch.ausgabe(); Bruch.erweitern(2); Bruch.ausgabedez(); Bruch.eingabedez(1.54); cout<<endl; Bruch.ausgabe(); system("PAUSE"); }