Abgabe_neu

Committer:
gigo2191
Date:
Tue Apr 28 19:33:52 2020 +0000
Revision:
0:5cabd77ebde3
Abgabe

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gigo2191 0:5cabd77ebde3 1 /******************************************************************************
gigo2191 0:5cabd77ebde3 2
gigo2191 0:5cabd77ebde3 3 C++ Kurs BULME 19/20 SM
gigo2191 0:5cabd77ebde3 4 Aufgane 02
gigo2191 0:5cabd77ebde3 5 Vererbung
gigo2191 0:5cabd77ebde3 6 Mario Neubauer
gigo2191 0:5cabd77ebde3 7
gigo2191 0:5cabd77ebde3 8 *******************************************************************************/
gigo2191 0:5cabd77ebde3 9
gigo2191 0:5cabd77ebde3 10 #include <stdio.h>
gigo2191 0:5cabd77ebde3 11 #include <math.h>
gigo2191 0:5cabd77ebde3 12
gigo2191 0:5cabd77ebde3 13 enum eckig { ja = 0, nein = 1 };
gigo2191 0:5cabd77ebde3 14
gigo2191 0:5cabd77ebde3 15 //---------------------------------------------------
gigo2191 0:5cabd77ebde3 16 // Basisklasse
gigo2191 0:5cabd77ebde3 17
gigo2191 0:5cabd77ebde3 18
gigo2191 0:5cabd77ebde3 19 class Form
gigo2191 0:5cabd77ebde3 20 {
gigo2191 0:5cabd77ebde3 21
gigo2191 0:5cabd77ebde3 22 protected: //Variablen, welche Vererbt werden können, jedoch nicht öffentlich zugänglich sind
gigo2191 0:5cabd77ebde3 23 eckig m_hat_ecken;
gigo2191 0:5cabd77ebde3 24 float m_umfang;
gigo2191 0:5cabd77ebde3 25 float m_flaeche;
gigo2191 0:5cabd77ebde3 26
gigo2191 0:5cabd77ebde3 27 public: //Variablen, welche öffentlich zugänglich sind
gigo2191 0:5cabd77ebde3 28 float leseUmfang() { return m_umfang; }
gigo2191 0:5cabd77ebde3 29 float leseFlaeche() { return m_flaeche; }
gigo2191 0:5cabd77ebde3 30 Form(eckig hat_ecken);
gigo2191 0:5cabd77ebde3 31 };
gigo2191 0:5cabd77ebde3 32
gigo2191 0:5cabd77ebde3 33 Form::Form(eckig ecken) { // im Konstruktor werden gem. Variablen initialisiert
gigo2191 0:5cabd77ebde3 34 m_hat_ecken = ecken;
gigo2191 0:5cabd77ebde3 35 m_umfang = 0;
gigo2191 0:5cabd77ebde3 36 m_flaeche = 0;
gigo2191 0:5cabd77ebde3 37 };
gigo2191 0:5cabd77ebde3 38
gigo2191 0:5cabd77ebde3 39
gigo2191 0:5cabd77ebde3 40 //---------------------------------------------------------
gigo2191 0:5cabd77ebde3 41 //Klasse Kreis
gigo2191 0:5cabd77ebde3 42
gigo2191 0:5cabd77ebde3 43
gigo2191 0:5cabd77ebde3 44 class Kreis : public Form { // Hier wird eine von Form abgeleitete Klasse Kreis deklariert
gigo2191 0:5cabd77ebde3 45
gigo2191 0:5cabd77ebde3 46 protected: // Zugriffschutz protected bedeutet, dass abgeleitete
gigo2191 0:5cabd77ebde3 47 float m_radius; // Klassen ebenfalls zugreifen können.
gigo2191 0:5cabd77ebde3 48
gigo2191 0:5cabd77ebde3 49 public:
gigo2191 0:5cabd77ebde3 50 float leseUmfang(); //Für den Umfang
gigo2191 0:5cabd77ebde3 51 float leseFlaeche(); //Für die Fläche
gigo2191 0:5cabd77ebde3 52 int Ecken(); //Prüft, ob Ecken vorhanden sind
gigo2191 0:5cabd77ebde3 53 Kreis(float radius); // Neuer Konstruktor erfordert nur den radius
gigo2191 0:5cabd77ebde3 54 };
gigo2191 0:5cabd77ebde3 55
gigo2191 0:5cabd77ebde3 56 Kreis::Kreis(float radius) : Form(nein) {
gigo2191 0:5cabd77ebde3 57
gigo2191 0:5cabd77ebde3 58 m_umfang = 2 * radius * M_PI; // Der Umfang wird berechnet
gigo2191 0:5cabd77ebde3 59 m_flaeche = radius * radius * M_PI; //Die Fläche wird berechnet
gigo2191 0:5cabd77ebde3 60 };
gigo2191 0:5cabd77ebde3 61
gigo2191 0:5cabd77ebde3 62 float Kreis::leseUmfang() {return m_umfang; } //Der Wert vom Umfang wird zurückgegeben
gigo2191 0:5cabd77ebde3 63 float Kreis::leseFlaeche() { return m_flaeche;} //Der Wert von der Fläche wird zurückgegeben
gigo2191 0:5cabd77ebde3 64 int Kreis::Ecken() {return m_hat_ecken;} //Es wird zurückgegeben, ob Ecken vorhanden sind
gigo2191 0:5cabd77ebde3 65
gigo2191 0:5cabd77ebde3 66
gigo2191 0:5cabd77ebde3 67 //---------------------------------------------------------
gigo2191 0:5cabd77ebde3 68 // Klasse Rechteck
gigo2191 0:5cabd77ebde3 69
gigo2191 0:5cabd77ebde3 70
gigo2191 0:5cabd77ebde3 71 class Rechteck : public Form{ //Klasse Rechteck wird erzeugt und Klasse Form wird vererbt
gigo2191 0:5cabd77ebde3 72
gigo2191 0:5cabd77ebde3 73 protected:
gigo2191 0:5cabd77ebde3 74 float m_laenge; //Für die Länge
gigo2191 0:5cabd77ebde3 75 float m_breite; //Für die Breite
gigo2191 0:5cabd77ebde3 76
gigo2191 0:5cabd77ebde3 77 public:
gigo2191 0:5cabd77ebde3 78 float leseUmfang(); //Für den Umfang
gigo2191 0:5cabd77ebde3 79 float leseFlaeche(); //Für die Fläche
gigo2191 0:5cabd77ebde3 80 int Ecken(); //Prüft, ob Ecken vorhanden sind
gigo2191 0:5cabd77ebde3 81 Rechteck(float laenge, float breite); //Konstruktor, welcher länge und breite erfordert
gigo2191 0:5cabd77ebde3 82 };
gigo2191 0:5cabd77ebde3 83
gigo2191 0:5cabd77ebde3 84 Rechteck::Rechteck(float laenge, float breite) : Form(ja) { //Die Membervariable wird initialisiert
gigo2191 0:5cabd77ebde3 85
gigo2191 0:5cabd77ebde3 86 m_umfang = 2 * laenge + 2 * breite; //Der Umfang wird berechnet
gigo2191 0:5cabd77ebde3 87 m_flaeche = laenge * breite; //Die Fläche wird berechnet
gigo2191 0:5cabd77ebde3 88
gigo2191 0:5cabd77ebde3 89 };
gigo2191 0:5cabd77ebde3 90
gigo2191 0:5cabd77ebde3 91 float Rechteck::leseUmfang() {return m_umfang;} //Der Wert vom Umfang wird zurückgegeben
gigo2191 0:5cabd77ebde3 92 float Rechteck::leseFlaeche(){return m_flaeche;} //Der Wert von der Fläche wird zurückgegeben
gigo2191 0:5cabd77ebde3 93 int Rechteck::Ecken() {return m_hat_ecken;} //Es wird zurückgegeben, ob Ecken vorhanden sind
gigo2191 0:5cabd77ebde3 94
gigo2191 0:5cabd77ebde3 95
gigo2191 0:5cabd77ebde3 96 //--------------------------------------------------------------------
gigo2191 0:5cabd77ebde3 97 //Klasse Quadrat
gigo2191 0:5cabd77ebde3 98
gigo2191 0:5cabd77ebde3 99
gigo2191 0:5cabd77ebde3 100 class Quadrat : public Rechteck{ //Klasse Quadrat wird erzeugt und Klasse Rechteck wird vererbt
gigo2191 0:5cabd77ebde3 101 protected:
gigo2191 0:5cabd77ebde3 102 float m_laenge; //Nur eine Länge nötig
gigo2191 0:5cabd77ebde3 103
gigo2191 0:5cabd77ebde3 104 public:
gigo2191 0:5cabd77ebde3 105 Quadrat(float laenge); //Nur die Länge ist erforderlich
gigo2191 0:5cabd77ebde3 106 };
gigo2191 0:5cabd77ebde3 107
gigo2191 0:5cabd77ebde3 108 Quadrat::Quadrat(float laenge) : Rechteck(m_laenge, m_breite) {
gigo2191 0:5cabd77ebde3 109 m_umfang = laenge * 4; //Der Umfang wird berechnet
gigo2191 0:5cabd77ebde3 110 m_flaeche = laenge * laenge; //Die Fläche wird berechnet
gigo2191 0:5cabd77ebde3 111 };
gigo2191 0:5cabd77ebde3 112
gigo2191 0:5cabd77ebde3 113
gigo2191 0:5cabd77ebde3 114 //--------------------------------------------------------------
gigo2191 0:5cabd77ebde3 115 //Hauptprogramm
gigo2191 0:5cabd77ebde3 116
gigo2191 0:5cabd77ebde3 117
gigo2191 0:5cabd77ebde3 118 int main()
gigo2191 0:5cabd77ebde3 119 {
gigo2191 0:5cabd77ebde3 120 //Klassen werden initialisiert
gigo2191 0:5cabd77ebde3 121 Kreis kr(1.0);
gigo2191 0:5cabd77ebde3 122 Rechteck rt(4.0, 2.0);
gigo2191 0:5cabd77ebde3 123 Quadrat qu(4.0);
gigo2191 0:5cabd77ebde3 124
gigo2191 0:5cabd77ebde3 125 //--------------------------------------------------------------------------
gigo2191 0:5cabd77ebde3 126
gigo2191 0:5cabd77ebde3 127 //Werte werden übernommen
gigo2191 0:5cabd77ebde3 128 //Kreis
gigo2191 0:5cabd77ebde3 129 int ecke_Kreis = kr.Ecken();
gigo2191 0:5cabd77ebde3 130 float um_Kreis = kr.leseUmfang();
gigo2191 0:5cabd77ebde3 131 float fl_Kreis = kr.leseFlaeche();
gigo2191 0:5cabd77ebde3 132
gigo2191 0:5cabd77ebde3 133 //Rechteck
gigo2191 0:5cabd77ebde3 134 int ecke_Rechteck = rt.Ecken();
gigo2191 0:5cabd77ebde3 135 float um_Rechteck = rt.leseUmfang();
gigo2191 0:5cabd77ebde3 136 float fl_Rechteck = rt.leseFlaeche();
gigo2191 0:5cabd77ebde3 137
gigo2191 0:5cabd77ebde3 138 //Quadrat
gigo2191 0:5cabd77ebde3 139 int ecke_Quadrat = qu.Ecken();
gigo2191 0:5cabd77ebde3 140 float um_Quadrat = qu.leseUmfang();
gigo2191 0:5cabd77ebde3 141 float fl_Quadrat = qu.leseFlaeche();
gigo2191 0:5cabd77ebde3 142
gigo2191 0:5cabd77ebde3 143 //--------------------------------------------------------------------------
gigo2191 0:5cabd77ebde3 144
gigo2191 0:5cabd77ebde3 145
gigo2191 0:5cabd77ebde3 146 //Werte werden ausgegeben
gigo2191 0:5cabd77ebde3 147 //Kreis
gigo2191 0:5cabd77ebde3 148 printf("Die Werte des Kreises:\n");
gigo2191 0:5cabd77ebde3 149 printf("Der Umfang des Kreises beträgt: %f\n", um_Kreis); //Umfang
gigo2191 0:5cabd77ebde3 150 printf("Die Fläche des Kreises beträgt: %f\n", fl_Kreis); //Fläche
gigo2191 0:5cabd77ebde3 151
gigo2191 0:5cabd77ebde3 152 //Ausgabe Ecken
gigo2191 0:5cabd77ebde3 153 switch(ecke_Kreis) {
gigo2191 0:5cabd77ebde3 154 case 0: printf("Der Kreis hat Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 155 default: printf("Der Kreis hat keine Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 156 }
gigo2191 0:5cabd77ebde3 157
gigo2191 0:5cabd77ebde3 158 //--------------------------------------------------------------------------
gigo2191 0:5cabd77ebde3 159
gigo2191 0:5cabd77ebde3 160 //Rechteck
gigo2191 0:5cabd77ebde3 161 printf("Die Werte des Rechtecks:\n");
gigo2191 0:5cabd77ebde3 162 printf("Der Umfang des Rechtecks beträgt: %f\n", um_Rechteck);
gigo2191 0:5cabd77ebde3 163 printf("Die Fläche des Rechtecks beträgt: %f\n", fl_Rechteck);
gigo2191 0:5cabd77ebde3 164
gigo2191 0:5cabd77ebde3 165 //Ausgabe Ecken
gigo2191 0:5cabd77ebde3 166 switch(ecke_Rechteck) {
gigo2191 0:5cabd77ebde3 167 case 0: printf("Das Rechteck hat Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 168 default: printf("Das Rechteck hat keine Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 169 }
gigo2191 0:5cabd77ebde3 170
gigo2191 0:5cabd77ebde3 171 //--------------------------------------------------------------------------
gigo2191 0:5cabd77ebde3 172
gigo2191 0:5cabd77ebde3 173 //Quadrat
gigo2191 0:5cabd77ebde3 174 printf("Die Werte des Quadrats:\n");
gigo2191 0:5cabd77ebde3 175 printf("Der Umfang des Quadrats beträgt: %f\n", um_Quadrat);
gigo2191 0:5cabd77ebde3 176 printf("Die Fläche des Quadrats beträgt: %f\n", fl_Quadrat);
gigo2191 0:5cabd77ebde3 177
gigo2191 0:5cabd77ebde3 178 //Ausgabe Ecken
gigo2191 0:5cabd77ebde3 179 switch(ecke_Quadrat) {
gigo2191 0:5cabd77ebde3 180 case 0: printf("Das Quadrat hat Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 181 default: printf("Das Quadrat hat keine Ecken\n\n"); break;
gigo2191 0:5cabd77ebde3 182 }
gigo2191 0:5cabd77ebde3 183 return 0;
gigo2191 0:5cabd77ebde3 184 }