TINF_Aufgaben

Committer:
haunsi
Date:
Wed Apr 29 11:11:02 2020 +0000
Revision:
0:92dfc86b0c2c
Namespace_final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
haunsi 0:92dfc86b0c2c 1 #include <stdio.h>
haunsi 0:92dfc86b0c2c 2 #include <math.h>
haunsi 0:92dfc86b0c2c 3
haunsi 0:92dfc86b0c2c 4 enum eckig { ja, nein };
haunsi 0:92dfc86b0c2c 5
haunsi 0:92dfc86b0c2c 6 class Form // Basisklasse
haunsi 0:92dfc86b0c2c 7 {
haunsi 0:92dfc86b0c2c 8 // In der Basisklasse werden alle gemeinsamen Variablen
haunsi 0:92dfc86b0c2c 9 protected:
haunsi 0:92dfc86b0c2c 10 eckig m_hat_ecken;
haunsi 0:92dfc86b0c2c 11 float m_umfang;
haunsi 0:92dfc86b0c2c 12 float m_flaeche;
haunsi 0:92dfc86b0c2c 13
haunsi 0:92dfc86b0c2c 14 public: // sowie auch alle gemeinsamen Methoden deklariert
haunsi 0:92dfc86b0c2c 15 float leseUmfang() { return m_umfang; }
haunsi 0:92dfc86b0c2c 16 float leseFlaeche() { return m_flaeche; }
haunsi 0:92dfc86b0c2c 17
haunsi 0:92dfc86b0c2c 18 Form(eckig hat_ecken);
haunsi 0:92dfc86b0c2c 19 };
haunsi 0:92dfc86b0c2c 20
haunsi 0:92dfc86b0c2c 21 Form::Form(eckig ecken) { // im Konstruktor werden gem. Variablen initialisiert
haunsi 0:92dfc86b0c2c 22 m_hat_ecken = ecken;
haunsi 0:92dfc86b0c2c 23 m_umfang = 0;
haunsi 0:92dfc86b0c2c 24 m_flaeche = 0;
haunsi 0:92dfc86b0c2c 25 };
haunsi 0:92dfc86b0c2c 26
haunsi 0:92dfc86b0c2c 27 class Kreis : public Form // erstellen einer neuen Klasse mit Verweis auf die Basisklasse
haunsi 0:92dfc86b0c2c 28 {
haunsi 0:92dfc86b0c2c 29
haunsi 0:92dfc86b0c2c 30 protected:
haunsi 0:92dfc86b0c2c 31 float m_radius; // eigentlich überflüssig, da nie verwendet
haunsi 0:92dfc86b0c2c 32
haunsi 0:92dfc86b0c2c 33 public: // nicht benötigt, da in Form schon ausprogrammiert
haunsi 0:92dfc86b0c2c 34 float leseUmfang() { return m_umfang; }
haunsi 0:92dfc86b0c2c 35 float leseFlaeche() { return m_flaeche; }
haunsi 0:92dfc86b0c2c 36
haunsi 0:92dfc86b0c2c 37 Kreis(float radius);
haunsi 0:92dfc86b0c2c 38 };
haunsi 0:92dfc86b0c2c 39
haunsi 0:92dfc86b0c2c 40 Kreis::Kreis(float radius) : Form(nein)
haunsi 0:92dfc86b0c2c 41 {
haunsi 0:92dfc86b0c2c 42 m_umfang = 2 * radius * M_PI;
haunsi 0:92dfc86b0c2c 43 m_flaeche = radius * radius * M_PI;
haunsi 0:92dfc86b0c2c 44 };
haunsi 0:92dfc86b0c2c 45
haunsi 0:92dfc86b0c2c 46
haunsi 0:92dfc86b0c2c 47 class Rechteck : public Form // erstellen einer neuen Klasse mit Verweis auf die Basisklasse
haunsi 0:92dfc86b0c2c 48 {
haunsi 0:92dfc86b0c2c 49 protected:
haunsi 0:92dfc86b0c2c 50 float m_seiteA; // eigentlich überflüssig, da nie verwendet
haunsi 0:92dfc86b0c2c 51 float m_seiteB; // eigentlich überflüssig, da nie verwendet
haunsi 0:92dfc86b0c2c 52
haunsi 0:92dfc86b0c2c 53 public:
haunsi 0:92dfc86b0c2c 54 float leseUmfang() { return m_umfang; }
haunsi 0:92dfc86b0c2c 55 float leseFlaeche() { return m_flaeche; }
haunsi 0:92dfc86b0c2c 56
haunsi 0:92dfc86b0c2c 57 Rechteck(float m_seiteA); // Deklaration des Konstruktors
haunsi 0:92dfc86b0c2c 58 Rechteck(float m_seiteA, float m_seiteB);
haunsi 0:92dfc86b0c2c 59 };
haunsi 0:92dfc86b0c2c 60
haunsi 0:92dfc86b0c2c 61 // :: gibt die Klassenzugehörigkeit an
haunsi 0:92dfc86b0c2c 62 Rechteck::Rechteck(float m_seiteA) : Form(ja){}; // Definition des Konstruktors
haunsi 0:92dfc86b0c2c 63 Rechteck::Rechteck(float m_seiteA, float m_seiteB) : Form(ja)
haunsi 0:92dfc86b0c2c 64 {
haunsi 0:92dfc86b0c2c 65 m_umfang = 2*m_seiteA + 2*m_seiteB; // Berechnungen
haunsi 0:92dfc86b0c2c 66 m_flaeche = m_seiteA * m_seiteB;
haunsi 0:92dfc86b0c2c 67 };
haunsi 0:92dfc86b0c2c 68
haunsi 0:92dfc86b0c2c 69 class Quadrat : public Rechteck // erstellen einer neuen Unterklasse mit Verweis auf die vorherige
haunsi 0:92dfc86b0c2c 70 {
haunsi 0:92dfc86b0c2c 71 public:
haunsi 0:92dfc86b0c2c 72 float leseUmfang() { return m_umfang; }
haunsi 0:92dfc86b0c2c 73 float leseFlaeche() { return m_flaeche; }
haunsi 0:92dfc86b0c2c 74
haunsi 0:92dfc86b0c2c 75 Quadrat(float m_seiteA); // Deklaration des Konstruktors
haunsi 0:92dfc86b0c2c 76 };
haunsi 0:92dfc86b0c2c 77
haunsi 0:92dfc86b0c2c 78 // :: gibt die Klassenzugehörigkeit an
haunsi 0:92dfc86b0c2c 79 Quadrat::Quadrat(float m_seiteA) : Rechteck (m_seiteA) // Definition des Konstruktors
haunsi 0:92dfc86b0c2c 80 {
haunsi 0:92dfc86b0c2c 81 m_umfang = 4*m_seiteA; // Berechnungen
haunsi 0:92dfc86b0c2c 82 m_flaeche = m_seiteA*m_seiteA;
haunsi 0:92dfc86b0c2c 83 };
haunsi 0:92dfc86b0c2c 84
haunsi 0:92dfc86b0c2c 85 int main()
haunsi 0:92dfc86b0c2c 86 {
haunsi 0:92dfc86b0c2c 87 Kreis kr(1.0);
haunsi 0:92dfc86b0c2c 88
haunsi 0:92dfc86b0c2c 89 printf("Der Umfang des Kreis beträgt: %f m.\n", kr.leseUmfang());
haunsi 0:92dfc86b0c2c 90 printf("Der Fläche des Kreis beträgt: %f m².\n\n", kr.leseFlaeche());
haunsi 0:92dfc86b0c2c 91
haunsi 0:92dfc86b0c2c 92 Rechteck rk(2.3,2.6);
haunsi 0:92dfc86b0c2c 93
haunsi 0:92dfc86b0c2c 94 printf("Der Umfang des Rechtecks beträgt: %f m.\n", rk.leseUmfang());
haunsi 0:92dfc86b0c2c 95 printf("Die Fläche des Rechtecks beträgt: %f m².\n\n", rk.leseFlaeche());
haunsi 0:92dfc86b0c2c 96
haunsi 0:92dfc86b0c2c 97 Quadrat qu(3.0);
haunsi 0:92dfc86b0c2c 98
haunsi 0:92dfc86b0c2c 99 printf("Der Umfang des Quadrats beträgt: %f m.\n", qu.leseUmfang());
haunsi 0:92dfc86b0c2c 100 printf("Der Fläche des Quadrats beträgt: %f m².\n\n", qu.leseFlaeche());
haunsi 0:92dfc86b0c2c 101 return 0;
haunsi 0:92dfc86b0c2c 102 }