commit d3138a4b1302cdf342e8cadac4d56df85634f852 Author: studavrije7683 Date: Fri Oct 15 08:36:02 2021 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e879563 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*/old/ +*.ilk +*.obj +*.pdb \ No newline at end of file diff --git a/Teil_1/.vscode/launch.json b/Teil_1/.vscode/launch.json new file mode 100644 index 0000000..dfec7a7 --- /dev/null +++ b/Teil_1/.vscode/launch.json @@ -0,0 +1,29 @@ +{ + // Verwendet IntelliSense zum Ermitteln möglicher Attribute. + // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen. + // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "g++.exe - Aktive Datei erstellen und debuggen", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe", + "setupCommands": [ + { + "description": "Automatische Strukturierung und Einrückung für \"gdb\" aktivieren", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "C/C++: g++.exe Aktive Datei kompilieren" + } + ] +} \ No newline at end of file diff --git a/Teil_1/.vscode/settings.json b/Teil_1/.vscode/settings.json new file mode 100644 index 0000000..3f817bf --- /dev/null +++ b/Teil_1/.vscode/settings.json @@ -0,0 +1,53 @@ +{ + "files.associations": { + "ostream": "cpp", + "iostream": "cpp", + "xiosbase": "cpp", + "memory": "cpp", + "system_error": "cpp", + "type_traits": "cpp", + "xmemory": "cpp", + "xstddef": "cpp", + "xstring": "cpp", + "cmath": "cpp", + "istream": "cpp", + "ios": "cpp", + "functional": "cpp", + "string": "cpp", + "atomic": "cpp", + "bit": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "exception": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iterator": "cpp", + "limits": "cpp", + "list": "cpp", + "new": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "tuple": "cpp", + "typeinfo": "cpp", + "unordered_map": "cpp", + "utility": "cpp", + "vector": "cpp", + "xfacet": "cpp", + "xhash": "cpp", + "xlocale": "cpp", + "xlocinfo": "cpp", + "xlocnum": "cpp", + "xtr1common": "cpp", + "xutility": "cpp", + "xtree": "cpp" + } +} \ No newline at end of file diff --git a/Teil_1/.vscode/tasks.json b/Teil_1/.vscode/tasks.json new file mode 100644 index 0000000..20bada4 --- /dev/null +++ b/Teil_1/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: g++.exe Aktive Datei kompilieren", + "command": "C:\\msys64\\mingw64\\bin\\g++.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Vom Debugger generierte Aufgabe." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 1 - Bauernhof.cpp b/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 1 - Bauernhof.cpp new file mode 100644 index 0000000..ac00122 --- /dev/null +++ b/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 1 - Bauernhof.cpp @@ -0,0 +1,13 @@ +#include + +using namespace std; + +int main() +{ + +cout << "Willkommen bei der Bauernhofverwaltung" << endl; + +system("PAUSE"); /*Compilerabhängig, evtl. auch getchar(); oder es kann entfallen */ +return 0; + +}; \ No newline at end of file diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 2 - Personendaten.cpp b/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 2 - Personendaten.cpp new file mode 100644 index 0000000..e57219c --- /dev/null +++ b/Teil_1/1. Einfuehrung in die Programmierung/Lösungen/Loesung Uebung 2 - Personendaten.cpp @@ -0,0 +1,17 @@ +#include +#include + +using namespace std; + +int main() +{ + cout << "Vorname: Max" << endl; + cout << "Nachname: Mustermann" << endl; + cout << "Alter: 21" << endl; + + cout << "Vorname: Erika" << endl << "Nachname: Engel " << endl << "Alter: 18" << endl; + + system("pause"); + return 0; +} + diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.cpp b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.cpp new file mode 100644 index 0000000..18a91e7 --- /dev/null +++ b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.cpp @@ -0,0 +1,8 @@ +#include + +using namespace std; + +int main(){ + cout<<"Willkommen auf dem Bauerhof von Bauer Max\n"; + return 0; +} \ No newline at end of file diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.exe b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.exe new file mode 100644 index 0000000..fbddf9a Binary files /dev/null and b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.exe differ diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.txt b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.txt new file mode 100644 index 0000000..b73dc3d --- /dev/null +++ b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 1 - Bauernhof.txt @@ -0,0 +1,15 @@ +Liebe Kursteilnehmer, + +parallel zum Kurs möchte ich mit Ihnen gemeinsam in +wöchentlichen Schritten ein kleines Programm entwickeln. +Sie können so den erlernten Stoff gleich einüben. +Ich werde am Ende der Woche meinen Lösungsvorschlag ins LMS stellen. + +Hier die erste Aufgabe: + +Bauer Max hat einen Bauernhof mit Enten und Schweinen. Diese will er verkaufen. + +Schreiben Sie ein C++-Programm, das den Nutzer am Bauernhof begrüßt. + +Grüße +Monika Eberle \ No newline at end of file diff --git a/Teil_1/1. Einfuehrung in die Programmierung/Uebung 2 - Personendaten.cpp b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 2 - Personendaten.cpp new file mode 100644 index 0000000..23801eb --- /dev/null +++ b/Teil_1/1. Einfuehrung in die Programmierung/Uebung 2 - Personendaten.cpp @@ -0,0 +1,11 @@ +#include + +using namespace std; +int main(){ + cout << "Vorname:\tMax"< + +using namespace std; + +int main() +{ + + int zahl = 21; + float kommazahl = 3.14; + string zeichenkette = "Hallo Welt"; + char zeichen = 'A'; + bool wahl = true; + + cout << zahl << endl; + cout << kommazahl << endl; + cout << zeichenkette << endl; + cout << zeichen << endl; + cout << wahl << endl; + + system("pause"); + return 0; + +}; diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 1 - Datentypen.exe b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 1 - Datentypen.exe new file mode 100644 index 0000000..6e6fc4e Binary files /dev/null and b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 1 - Datentypen.exe differ diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 2 - Bauernhof.cpp b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 2 - Bauernhof.cpp new file mode 100644 index 0000000..549aa88 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 2 - Bauernhof.cpp @@ -0,0 +1,25 @@ +#include + +using namespace std; + +int main() +{ + + int Gewicht=0; + float Tagespreis=0; + float Einnahme=0; + + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; + + Einnahme = Gewicht*Tagespreis; + + cout << "Einnahme: " << Einnahme << endl; + cout << endl << endl; + + system("PAUSE"); + return 0; + +} \ No newline at end of file diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 3 - Temperatur.cpp b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 3 - Temperatur.cpp new file mode 100644 index 0000000..dd4c548 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Lösung/Loesung Uebung 3 - Temperatur.cpp @@ -0,0 +1,23 @@ +#include + +using namespace std; + +int main() +{ + + float fahrenheit; + float celsius; + const int wert = 32; + + cout << "Hallo. Bitte Wert eingeben: "; + cin >> fahrenheit; + cout << endl << "Eingabe war: " << fahrenheit; + + celsius = ((fahrenheit - wert) * 5) / 9; + + cout << endl; + cout << "Wert in Celsius: " << celsius; + + system("pause"); + return 0; +} diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.cpp b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.cpp new file mode 100644 index 0000000..4eaaa78 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.cpp @@ -0,0 +1,20 @@ +#include + +using namespace std; + +int main() +{ + uint8_t pos_ganzzahl = 54; + long double lange_dezimalzahl = 12312341312341.1231; + const char *zeichen_kette = "Hallo Welt"; + char einzelnes_zeichen = 'X'; + bool wahrheits_wert = true; + + cout << "Ganzzahl: \t" << pos_ganzzahl << endl; + cout << "Dezimalzahl: \t" << lange_dezimalzahl << endl; + cout << "Zeichenkette bzw. Text: \t" << zeichen_kette << endl; + cout << "Zeichen bzw. Buchstabe: \t" << einzelnes_zeichen << endl; + cout << "Wahrheitswert: \t" << wahrheits_wert << " (" << (wahrheits_wert ? "True)" : "False)") << endl; + + return 0; +} \ No newline at end of file diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.exe b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.exe new file mode 100644 index 0000000..eab0b82 Binary files /dev/null and b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.exe differ diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.txt b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.txt new file mode 100644 index 0000000..fb304b8 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 1 - Datentypen.txt @@ -0,0 +1,10 @@ +Machen Sie sich mit den einzelnen Datentypen vertraut. +Erstellen Sie für jeden Punkt eine Variable mit dem passenden Datentyp: + +- Ganzzahl +- Dezimalzahl +- Zeichenkette bzw. Text +- Zeichen bzw. Buchstabe +- Wahrheitswert + +Weisen Sie Ihnen einen Wert zu und geben sie anschließend diese Werte auf dem Bildschirm aus. diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.cpp b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.cpp new file mode 100644 index 0000000..3c384dc --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.cpp @@ -0,0 +1,35 @@ +#include + +using namespace std; +const char *fehler_meldung = "\nEs gab einen Fehler bei der Eingabe.\nBitte erneut eingeben.\n"; +int main() +{ + cout << "Willkommen auf dem Bauerhof von Bauer Max\n"; + float tagespreis = 0, einnahmen = 0; + int gewicht = 0; + cout << "Bitte geben Sie den aktuellen Tagespreis udn das Gewicht an. \n\tTagespreis: "; + do + { + if (cin.fail()) + { + cout << fehler_meldung << "\tTagespreis:"; + cin.clear(); + cin.ignore(); + } + cin >> tagespreis; + } while (cin.fail()); + cout << "Gewicht: "; + do + { + if (cin.fail()) + { + cout << fehler_meldung << "\tGewicht:"; + cin.clear(); + cin.ignore(); + } + cin >> gewicht; + } while (cin.fail()); + einnahmen = tagespreis * gewicht; + cout << "Die heutigen Einnahmen belaufen sich auf: " << einnahmen <<" € ("<< tagespreis<<" x " << gewicht<<")\n"; + return 0; +} diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.exe b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.exe new file mode 100644 index 0000000..8571cd9 Binary files /dev/null and b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.exe differ diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.txt b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.txt new file mode 100644 index 0000000..e2f7c94 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 2 - Bauernhof.txt @@ -0,0 +1,13 @@ +Bauer Max will ein Schwein verkaufen. +Ergänzen Sie Ihr Programm aus Kapitel 1 "Uebung 1 - Bauernhof" um folgende Variablen: + +- Gewicht +- Tagespreis +- Einnahme + +In der Variablen Gewicht (Ganzzahl) soll das Gewicht des zu verkaufenden Schweins gespeichert werden. +In der Variable Tagespreis (Dezimalzahl) soll der Tagespreis für das Schwein gespeichert werden. +Beide Variablen werden im Dialog vom Nutzer über die Konsole eingegeben. +Die Einnahme errechnet sich dann aus Gewicht * Tagespreis. + +Geben Sie die Höhe der Einnahme auf dem Bildschirm aus. diff --git a/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 3 - Temperatur.cpp b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 3 - Temperatur.cpp new file mode 100644 index 0000000..da876c7 --- /dev/null +++ b/Teil_1/2. Variablen, Datentypen, Rechenoperatoren/Uebung 3 - Temperatur.cpp @@ -0,0 +1,19 @@ +#include + +using namespace std; + +const int kEauationVal = 32; + +int main(){ + float user_input=0, result=0; + cout<<"Fahrenheit zu Celsius Rechener\n Bitte Temperatrur in Fahrenheit angeben: "; + cin>>user_input; + if(cin.fail()){ + cout<<"\n Fehler bei der Eingabe. Bitte Programm neu starten\n"; + return -1; + } + result = ((user_input-kEauationVal)*5)/9; + cout << "Die Temperatur "< + +using namespace std; + +int Gewicht=0; // 3 globale Variablenen deklarieren und initialisieren +float Tagespreis=0; +float Einnahme=0; + +void Daten_abfragen() //Deklaration und Definition der Methode Daten_abfragen +{ + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; +} + +void Einnahme_berechnen() //Deklaration und Definition der Methode Einnahme_berechnen +{ + Einnahme = Gewicht * Tagespreis; + cout << "Einnahme: " << Einnahme< + +using namespace std; + +float quadrieren(float); //Deklaration der Funktion quadrieren. Übergabe ist eine Dezimalzahl, Rückgabe ist das Quadrat der übergebenen Zahl +void kreisflaeche(float radius); //Deklaration der Funktion kreisflaeche. Übergabe ist eine Dezimalzahl (Radius), keine Rückgabe, gibt Kreisfläche aus + +int main(int argc, char** argv) { + + float quad_zahl; + float radius; + + cout << "Bitte geben Sie eine Zahl zum Quadrieren ein: "; + cin >> quad_zahl; + cout << endl << "Ergebnis Quadratzahl: " << quadrieren(quad_zahl) << endl << endl; + + cout << "Bitte geben Sie einen Radius ein: "; + cin >> radius; + kreisflaeche(radius); + + return 0; +} + +float quadrieren(float zahl) +{ + return zahl * zahl; //Zahl quadrieren +} + +void kreisflaeche(float r) +{ + const float pi = 3.14; + cout << endl << "Ergebnis Kreisfl\204che: " << quadrieren(r)*pi; //Kreisfläche berechnen und ausgeben +} + diff --git a/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.cpp b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.cpp new file mode 100644 index 0000000..ee7566f --- /dev/null +++ b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.cpp @@ -0,0 +1,43 @@ +#include + +using namespace std; +// Prototypen +template +T DatenErfassen(T *result, const char message[]); +float EinnahmenBerechnen(float *tagespreis, int *gewicht); + +const char *fehler_meldung = "\nEs gab einen Fehler bei der Eingabe.\nBitte erneut eingeben.\n"; +int main() +{ + cout << "Willkommen auf dem Bauerhof von Bauer Max\n"; + float tagespreis = 0, einnahmen = 0; + int gewicht = 0; + cout << "Bitte geben Sie den aktuellen Tagespreis und das Gewicht an.\n "; + DatenErfassen(&tagespreis, "Tagespreis:"); + DatenErfassen(&gewicht, "Gewicht:"); + einnahmen = tagespreis * gewicht; + cout << "Die heutigen Einnahmen belaufen sich auf: " << EinnahmenBerechnen(&tagespreis, &gewicht) << " € (" << tagespreis << " x " << gewicht << ")\n"; + return 0; +} + +template +T DatenErfassen(T *result, const char message[]) +{ + do + { + if (cin.fail()) + { + cout << fehler_meldung; + cin.clear(); + cin.ignore(); + } + cout << message << "\t"; + cin >> *result; + } while (cin.fail()); + return *result; +} + +float EinnahmenBerechnen(float *tagespreis, int *gewicht) +{ + return (*tagespreis) * (*gewicht); +} \ No newline at end of file diff --git a/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.exe b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.exe new file mode 100644 index 0000000..b425db5 Binary files /dev/null and b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.exe differ diff --git a/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.txt b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.txt new file mode 100644 index 0000000..ee38152 --- /dev/null +++ b/Teil_1/3. Funktionen/Uebung 1 - Bauernhof.txt @@ -0,0 +1,7 @@ +Ergänzen Sie Ihr Bauernhof-Programm aus Kapitel 2 "Uebung 2 - Bauernhof" um folgende zwei Funktionen: + +- Daten_erfassen() -> Für die Eingabe des Gewichts und des Preises +- Einnahme_berechnen() -> Berechnet die Einnahme und gibt diese aus + +Die Variablen können global definiert werden. +Rufen Sie die beiden Funktionen auf. \ No newline at end of file diff --git a/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.cpp b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.cpp new file mode 100644 index 0000000..0ae94a9 --- /dev/null +++ b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.cpp @@ -0,0 +1,76 @@ +#include +#define _USE_MATH_DEFINES +#include + +using namespace std; + +float SquareArea(); +void CircleArea(); + +template +void GetInput(T *result, const char message[], F &&constraint); + +int main() +{ + int option = 0; + cout << "Willkommen im Flaechenrechner\n Tippen sie \n\t\"1\" für die Flaechenberechengung eines Rechtecks oder \n\t\"2\" für die Berechnung eines Kreises\n"; + GetInput(&option, "Option: ", [](int val) + { return (val > 0 && val < 3); }); + + switch (option) + { + case 1: + { + float result = SquareArea(); + cout << "Die Flaeche betraegt " << result << " Einheiten\n"; + break; + } + case 2: + CircleArea(); + break; + default: + break; + } +} + +template +void GetInput(T *result, const char message[], F &&constraint) +{ + while (true) + { + cout << message; + cin >> *result; + if (cin.fail()) + { + cout << "\nFehler bei der Eingabe, bitte veruschen Sie es noch einmal\n"; + cin.clear(); + cin.ignore(); + } + else if (!constraint(*result)) + { + cout << "\nDer eingegebene Wert entspricht nicht den Anforderungen\n"; + } + else + break; + } +} + +float SquareArea() +{ + float width = 0, height = 0; + cout << "Rechteck berechnen. Bitte Daten eingeben. \n"; + GetInput(&width, "Breite: ", [](float val) + { return val>0; }); + GetInput(&height, "Hoehe: ", [](float val) + { return val>0; }); + return (width * height); +} + +void CircleArea() +{ + float rad = 0; + cout << "Kreis berechnen. Bitte Daten eingeben. \n"; + GetInput(&rad, "Radius: ", [](float val) + { return val>0; }); + cout << "Die Flaeche betraegt " << (M_PI * pow(rad, 2)) << " Einheiten\n"; +} \ No newline at end of file diff --git a/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.exe b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.exe new file mode 100644 index 0000000..c5a28a4 Binary files /dev/null and b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.exe differ diff --git a/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.txt b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.txt new file mode 100644 index 0000000..0098423 --- /dev/null +++ b/Teil_1/3. Funktionen/Uebung 2 - Quadrieren und Flaeche.txt @@ -0,0 +1,13 @@ +Es soll folgendes Programm erstellt werden: + +- Ausgabe eines Willkommensbildschirms +- Eingabeaufforderungen und Eingabe einer Dezimalzahl +- Quadrieren der Dezimalzahl (in einer Funktion, Rückgabe ist das Ergebnis + [produkt = zahl * zahl]) und Ausgabe des Ergebnisses in der Main-Funktion +- Eingabeaufforderungen und Eingabe eines Radius +- Berechnung der Kreisfläche (in einer Funktion, keine Rückgabe. + Das Ergebnis der Berechnung [flaeche = radius * radius * konstante_pi]) + soll in dieser Funktion ausgegeben werden.) + Die Variable konstante_pi soll als Konstante deklariert und mit dem Wert + 3.14 initialisiert werden. + Verwenden Sie für die Berechnung [radius * radius] die vorher erstellte Funktion. diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 1 - Einmaleins.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 1 - Einmaleins.cpp new file mode 100644 index 0000000..6373807 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 1 - Einmaleins.cpp @@ -0,0 +1,64 @@ +#include + +using namespace std; + +void printTableFor(); +void printTableWhile(); +void printTableDoWhile(); + +int main(int argc, char** argv) +{ + printTableFor(); + cout << endl; + printTableWhile(); + cout << endl; + printTableDoWhile(); + return 0; +} + +void printTableFor() +{ + int max = 10; + for(int i = 1; i <= max; i++) + { + for(int j = 1; j <= max; j++) + { + cout << (i*j) << "\t"; + } + cout << endl; + } +} + +void printTableWhile() +{ + int max = 10; + int i = 1, j = 1; + while(i <= 10) + { + while(j <= 10) + { + cout << (i*j) << "\t"; + j++; + } + j = 1; + cout << endl; + i++; + }; +} + +void printTableDoWhile() +{ + int max = 10; + int i = 1, j = 1; + do + { + do + { + cout << (i*j) << "\t"; + j++; + }while(j <= 10); + j = 1; + cout << endl; + i++; + } while(i <= 10); +} diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp new file mode 100644 index 0000000..0bbff40 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp @@ -0,0 +1,56 @@ +#include + +using namespace std; + +int main(int argc, char** argv) { + float fahrenheit; + float tmp; + float celsius; + int schrittweite = 20; + int maximum = 300; + + do + { + cout << "Fahrenheit: "; + cin >> fahrenheit; + }while(fahrenheit<=0); + + tmp = fahrenheit; + cout << "Schrittweite: "; + cin >> schrittweite; + cout << "Maximum: "; + cin >> maximum; + + cout << endl; + + for(fahrenheit=tmp; fahrenheit <= maximum; fahrenheit+=schrittweite) + { + celsius = ((fahrenheit - 32) * 5) / 9; + cout << "Fahrenheit: " << fahrenheit << "\t| Celsius: " << celsius << endl; + } + + cout << endl; + fahrenheit = tmp; + + while(fahrenheit <= maximum) + { + celsius = (((fahrenheit - 32) * 5) / 9); + if( celsius <= 10) + { + cout << "Es hat " << celsius << " \tGrad und es ist kalt" << endl; + } + else if(celsius <= 20) + { + cout << "Es hat " << celsius << " \tGrad und es ist angenehm" << endl; + } + else + { + cout << "Es hat " << celsius << " \tGrad und es wird heiss" << endl; + } + fahrenheit += schrittweite; + } + + + return 0; +} + diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 3 - Zahlenraten.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 3 - Zahlenraten.cpp new file mode 100644 index 0000000..026f270 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 3 - Zahlenraten.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +using namespace std; + + +int main () +{ + int zahl, eingabe, versuche=0; + + srand (time(NULL)); + zahl = rand()%100 + 1; //Zufallszahl zwischen 0 und 99 wird generiert, daher +1, damit die Zahl zwischen 1 und 100 ist + + do + { + cout << "Zahl eingeben: "; + cin >> eingabe; + if(eingabe > zahl) + cout << "Zu gross!" << endl; + if(eingabe < zahl) + cout << "Zu klein!" << endl; + versuche ++; + } + while(eingabe != zahl && versuche < 6); + + if (eingabe == zahl) + cout << "Erraten!" << endl; + else + cout << "Verloren! Die gesuchte Zahl war " << zahl << endl; + + system("pause"); + return 0; +} diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 4 - Taschenrechner.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 4 - Taschenrechner.cpp new file mode 100644 index 0000000..ee9f499 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 4 - Taschenrechner.cpp @@ -0,0 +1,37 @@ +#include +#include + +using namespace std ; + +int main () +{ + float z1, z2, erg; + char op; + cout << "2 Zahlen mit Operator dazwischen [+ - * / ]: "; + cin >> z1 >> op >> z2 ; + cout << z1 << op << z2 << "="; + switch (op) + { + case '+': + erg = z1 + z2; + cout << erg << endl; + break ; + case '-': + cout << z1 - z2 << endl; + break ; + case '*': + cout << z1 * z2 << endl; + break ; + case '/': + if ( z2 ==0) + cout << " Division durch 0 geht nicht" << endl; + else + cout << z1 / z2 << endl; + break ; + default : + cout << " Den Operator kenne ich nicht." << endl; + } + + system("pause"); + return 0; +} diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 5 - Bauernhof.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 5 - Bauernhof.cpp new file mode 100644 index 0000000..4cb1368 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 5 - Bauernhof.cpp @@ -0,0 +1,123 @@ +#include +#include + +using namespace std; + +int Tiernummer; +string Art; +float Gewicht; +float Einnahme; +float Tagespreis; +bool Bestand; + +//Prototypen +void TierAnlegen(void); +void TierAnzeigen(void); +void TierVerkaufen(int); + +// Funktion zum Anlegen + +void TierAnlegen(void) +{ + cout << "Bitte geben Sie die Tiernummer ein: "; + cin >> Tiernummer; + cout << endl; + cout << "Bitte geben Sie die Tierart ein: "; + cin >> Art; + cout << endl; + cout << "Bitte geben Sie das Gewicht des Tieres an: "; + cin >> Gewicht; + cout << endl; + Bestand = true; //Tier ist im Bestand +} ; + +// Funktion um Daten anzuzeigen + +void TierAnzeigen(void) +{ + cout << "Tiernummer: " << Tiernummer << endl; + cout << "Tierart: " << Art << endl; + cout << "Gewicht: " << Gewicht << endl; + cout << "Noch im Bestand? (1 = ja, 0 = nein): " << Bestand << endl; +}; + +void TierVerkaufen(int nr) +{ + if(Tiernummer == nr && Bestand == 1) + { + cout << "Wie steht der Tagespreis?"<< endl; + cin >> Tagespreis; + Einnahme = Einnahme + (Gewicht*Tagespreis); + cout << "Gesamteinnahmen: " << Einnahme << endl; + Bestand = false; + cout << endl << endl; + } + else if (Tiernummer == nr && Bestand == 0) + { + cout << "Tier mit der Nummer " << nr << " nicht im Bestand." << endl; + } + else + { + cout << "Tier mit der Nummer " << nr << " nicht vorhanden." << endl; + } +} ; + +int main(void) +{ +int s = 0, eing, nr; // deklariert integer s auf Null, wird für das Menü werwendet + +cout << "Herzlich willkommen bei der Bauernhofverwaltung" << endl << endl << "Bitte treffen Sie Ihre Auswahl im Menue..." << endl << endl << endl; + + // Do-While-Schleife, die das Menü ausgibt und Untermenüs aufruft + do + { + + system("cls"); + + //Das Menü + cout << "[1] Tier anlegen" << endl; + cout << "[2] Tier anzeigen" << endl; + cout << "[3] Tier verkaufen" << endl; + cout << "[0] Beende" << endl<> eing; + + //Switch-Abfrage lädt in die einzelnen Menüpunkte + switch(eing) + { + + case 1: + { + system("cls"); + TierAnlegen(); // Funktion zur Anlage eines Tieres + cout << "Tier wurde angelegt: " << endl; + system("pause"); + break; + } + + case 2: + { + system("cls"); + TierAnzeigen(); + system("pause"); + break; + } + + case 3: + { + system("cls"); + cout << "Tiernummer eingeben: " << endl; + cin >> nr; + TierVerkaufen(nr); + system("pause"); + break; + } + } + }while (eing != 0); + cout << endl << "Auf Wiedersehen!" << endl; + + system("pause"); + return 0; +}; + diff --git a/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 6 - Continue-Anweisung.cpp b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 6 - Continue-Anweisung.cpp new file mode 100644 index 0000000..c5e2045 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Lösungen/Loesung Uebung 6 - Continue-Anweisung.cpp @@ -0,0 +1,22 @@ +#include + +using namespace std; + +int main() +{ + for (int num=0; num<=100; num++) + { + / * Dies bedeutet, dass wenn der Wert von +        * num nicht durch 2 teilbar ist, dann wird die +        * continue-Anweisung ausgeführt, wodurch die aktuelle Iteration übersprungen +        * wird und und somit die nächste Iteration stattfindet. +        * / + + if (num % 2 == 1) // Ist nicht durch die Zahl 2 teilbar + { + continue; + } + cout << num << " "; + } + return 0; +} \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.cpp b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.cpp new file mode 100644 index 0000000..3406548 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.cpp @@ -0,0 +1,56 @@ +#include + +using namespace std; + +void printTableFor(); +void printTableWhile(); +void printTableDoWhile(); +int main() +{ + cout << "For Loop\n"; + printTableFor(); + cout << "While Loop\n"; + printTableWhile(); + cout << "Do While Loop\n"; + printTableDoWhile(); + return 0; +} +void printTableFor() +{ + for (int i = 1; i < 11; i++) + { + for (int j = 1; j < 11; j++) + cout << (i * j) << "\t"; + cout << "\n"; + } +} +void printTableWhile() +{ + int i = 1; + while (i < 11) + { + int j = 1; + while (j < 11) + { + cout << (i * j) << "\t"; + j++; + } + cout << "\n"; + i++; + } +} +void printTableDoWhile() +{ + int i = 1; + do + { + int j = 1; + do + { + cout << (i * j) << "\t"; + j++; + } while (j < 11); + cout << "\n"; + i++; + } while (i < 11); +} \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.exe b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.exe new file mode 100644 index 0000000..162805d Binary files /dev/null and b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.exe differ diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.txt b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.txt new file mode 100644 index 0000000..8f31e55 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 1 - Einmaleins.txt @@ -0,0 +1,24 @@ +Erstellen Sie ein Tableau, welches das kleine „Einmaleins“ ausgibt. +Das Tableu soll in der Funktion void printTable() ausgegeben werden. + +Ausgabe: + +1 2 3 4 5 6 7 8 9 10 +2 4 6 8 10 12 14 16 18 20 +3 6 9 12 15 18 21 24 27 30 +4 8 12 16 20 24 28 32 36 40 +5 10 15 20 25 30 35 40 45 50 +6 12 18 24 30 36 42 48 54 60 +7 14 21 28 35 42 49 56 63 70 +8 16 24 32 40 48 56 64 72 80 +9 18 27 36 45 54 63 72 81 90 +10 20 30 40 50 60 70 80 90 100 + + +Tipp: +- Rufen Sie die printTableFor()-Methode in der main()-Methode auf +- Für diese Aufgabe benötigt man eine verschachtelte for-Schleife. +- Den Tabulator erzeugt man mit „\t“. + +Realisieren Sie anschließend die gleiche Ausgabe mit einer while +und einer do-while Schleife, welche jeweils in einer neuen Methode aufgerufen wird. \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.cpp b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.cpp new file mode 100644 index 0000000..3b418ff --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.cpp @@ -0,0 +1,65 @@ +#include + +using namespace std; +const int kEauationVal = 32; + +template +void getVal(const char text[], T *val); + +int main() +{ + float fahrenheit = 0, schritt_weite = 0, maximal_wert = 0; + cout << "Eingabe\n\n"; + getVal("Fahrenheit", &fahrenheit); + getVal("Schrittweite", &schritt_weite); + getVal("Maximalwert", &maximal_wert); + cout << "\nAusgabe\n\n"; + + for (int i = fahrenheit; i <= maximal_wert; i += schritt_weite) + { + float celsius_wert = ((i - kEauationVal) * 5) / 9; + cout << "Celsius: " << celsius_wert; + if (celsius_wert <= 10) + cout << " es ist kalt"; + else if (celsius_wert <= 20) + cout << " es ist angenehm"; + else if (celsius_wert > 20) + cout << " es ist heiss"; + cout << endl; + } + + do + { + cout << "Fahrenheit: " << fahrenheit << " | Celsius: " << ((fahrenheit - kEauationVal) * 5) / 9 << endl; + fahrenheit += schritt_weite; + } while (fahrenheit <= maximal_wert); + + for (int i = fahrenheit; i <= maximal_wert; i += schritt_weite) + { + float celsius_wert = ((fahrenheit - kEauationVal) * 5) / 9; + cout << "Celsius: " << celsius_wert; + if (celsius_wert <= 10) + cout << " es ist kalt"; + else if (celsius_wert <= 20) + cout << " es ist angenehm"; + else if (celsius_wert > 20) + cout << " es ist heiss"; + cout << endl; + } + return 0; +} + +template +void getVal(const char text[], T *val) +{ + do + { + cout << "\t" << text << " = "; + if (cin.fail()) + { + cin.clear(); + cin.ignore(); + } + cin >> *val; + } while (cin.fail() || *val <= 0); +} diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.exe b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.exe new file mode 100644 index 0000000..e44bdb2 Binary files /dev/null and b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.exe differ diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.txt b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.txt new file mode 100644 index 0000000..0548a54 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 2 - Fahrenheit in Celsius.txt @@ -0,0 +1,32 @@ +Schreiben Sie ein Programm, dass die Berechnung von Fahrenheit nach Celsius ausgibt. +Hierbei soll der Wert von Fahrenheit eingegeben werden können. +Die Eingabe darf nicht negativ sein und soll solange erfolgen, bis ein Wert größer gleich Null eingegeben wurde. + +Legen Sie anschließend eine Schrittweite und einen Maximalwert fest. + +Anhand einer Schleife soll der Wert von Fahrenheit und der dazugehörige Celsiuswert ausgegeben werden. + +Beispiel + +Eingabe: + + Fahrenheit = 50 + Schrittweite = 5 + Maximalwert = 75 + +Ausgabe: + + Fahrenheit: 50 | Celsius: 10 + Fahrenheit: 55 | Celsius: 12.7778 + Fahrenheit: 60 | Celsius: 15.5556 + Fahrenheit: 65 | Celsius: 18.3333 + Fahrenheit: 70 | Celsius: 21.1111 + Fahrenheit: 75 | Celsius: 23.88889 + + +Erstellen Sie nun eine weitere Schleife (verwenden Sie nun aber aber einen anderen Schleifentyp). +Geben Sie den Celsiuswert und noch folgenden Text aus: + +- Wenn es kleiner gleich 10 Grad hat, dann kommt der Text "es ist kalt" +- Wenn es kleiner gleich 20 Grad hat, dann kommt der Text "es ist angenehm" +- Wenn es größer als 20 Grad hat, dann kommt der Text "es wird heiss" \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.cpp b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.cpp new file mode 100644 index 0000000..6efbc54 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.cpp @@ -0,0 +1,38 @@ +#include + +using namespace std; +template +void getInput(T *val); +int main() +{ + srand(time(NULL)); + int random_number = rand() & 100; + while (true) + { + int input_number; + getInput(&input_number); + input_number -= random_number; + if (input_number < 0) + cout << "Zu klein\n"; + else if (input_number > 0) + cout << "Zu groß\n"; + else if (input_number == 0) + break; + } + cout << "Du hast es erraten!\n"; + return 0; +} +template +void getInput(T *val) +{ + do + { + cout << "Please guess number(0-99): "; + if (cin.fail()) + { + cin.clear(); + cin.ignore(); + } + cin >> *val; + } while (cin.fail() || *val < 0 || *val >= 100); +} \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.exe b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.exe new file mode 100644 index 0000000..d7d9f3a Binary files /dev/null and b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.exe differ diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.txt b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.txt new file mode 100644 index 0000000..72eade4 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 3 - Zahlenraten.txt @@ -0,0 +1,8 @@ +Programmieren Sie das Spiel ’Zahlenraten‘: Der Computer generiert eine Zufallszahl +zwischen 1 und 100, die der Spieler erraten muß. +Es wird bei jedem Durchgang mitgeteilt, ob die eingegebene Zahl zu groß oder zu klein war. + +Tipp: Zufallszahlen werden wie folgt generiert: +Ein einmaliger Aufruf srand(time(NULL)) initialisiert den Zufallszahlengenerator. +Anschließend liefert jeder Aufruf von rand()%100 eine Zufallszahl zwischen 0 und 99. +Die Funktionen sind in und deklariert. \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 4 - Taschenrechner.cpp b/Teil_1/4. Kontrollstrukturen/Uebung 4 - Taschenrechner.cpp new file mode 100644 index 0000000..7cfaf1d --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 4 - Taschenrechner.cpp @@ -0,0 +1,35 @@ +#include +#include +#include + +using namespace std; + +int main() +{ + + float z1 = 0, z2 = 0; + char op = 0; + cout << "Bitte Ausdruck eingeben: \n"; + cin >> z1 >> op >> z2; + switch (op) + { + case '+': + cout<< "Ergebnis: "<<(z1+z2)<> var1 << var2; + +Eine eventuelle Division durch 0 soll abgefangen werden. +Bei Eingabe eines falschen Operators soll eine Fehlermeldung erscheinen. \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.cpp b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.cpp new file mode 100644 index 0000000..36fb100 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.cpp @@ -0,0 +1,129 @@ +#include +#include +#include +#include +#include +using namespace std; +// Prototypen +template +using Func = std::function; +template +T DatenErfassen(T *result, const char message[]); +template +T DatenErfassen(T *result, const char message[], K &&constraint); +void addTier(); +float EinnahmenBerechnen(float *tagespreis, int *gewicht); + +typedef struct Tier +{ + string tierart; + int tiernummer; + float gewicht; + bool operator<(const Tier &cmp) const { return tiernummer - cmp.tiernummer; } + bool operator==(const Tier &cmp) const + { + return tiernummer == cmp.tiernummer; + } + string to_string() + { + return ("Tiernummer " + std::to_string(tiernummer) + " ist von der Art " + this->tierart + " und wiegt " + std::to_string(gewicht) + " KG.\n"); + } +} tier_frame; +set tiere; +const char *fehler_meldung = "\nEs gab einen Fehler bei der Eingabe.\nBitte erneut eingeben.\n"; +int main() +{ + int menu_state = -1; + cout << "Willkommen auf dem Bauerhof von Bauer Max\n"; + while (true) + { + switch (menu_state) + { + case 0: + return 0; + case 1: + { + cout << "Tier anlegen:\n"; + Tier tier; + DatenErfassen(&tier.tierart, "Tierart: "); + DatenErfassen(&tier.gewicht, "Gewicht: "); + DatenErfassen(&tier.tiernummer, "Tiernummer: "); + tiere.insert(tier); + menu_state = -1; // Reset + break; + } + case 2: + { + int tierid = 0; + cout << "Tier verkaufen:\n"; + DatenErfassen(&tierid, "Tiernummer:"); + if (tiere.erase(tier_frame{"", tierid, 0})) + { + cout << "Tier verkauft\n"; + } + else + { + cout << "Tier wurde nicht gefunden\n"; + } + menu_state = -1; // Reset + break; + } + case 3: + { + cout << "Alle Tiere:\n"; + for (Tier tier : tiere) + { + cout << tier.to_string(); + } + menu_state = -1; // Reset + break; + } + default: + { + cout << "\t- 1: Tier anlegen ()\n"; + cout << "\t- 3: Tier anzeigen ()\n"; + cout << "\t- 2: Tier verkaufen (Tiernummer)\n"; + cout << "\t- 0: Programm beenden\n"; + DatenErfassen(&menu_state, "Programm Modul:", [](int *val) + { return (bool)(*val >= 0 && *val <= 4); }); + } + } + } + + float tagespreis = 0, einnahmen = 0; + int gewicht = 0; + cout << "Bitte geben Sie den aktuellen Tagespreis und das Gewicht an.\n "; + DatenErfassen(&tagespreis, "Tagespreis:"); + DatenErfassen(&gewicht, "Gewicht:"); + einnahmen = tagespreis * gewicht; + cout << "Die heutigen Einnahmen belaufen sich auf: " << EinnahmenBerechnen(&tagespreis, &gewicht) << " € (" << tagespreis << " x " << gewicht << ")\n"; + return 0; +} + +template +T DatenErfassen(T *result, const char message[]) +{ + return DatenErfassen(result, message, [](T *val) + { return true; }); +} +template +T DatenErfassen(T *result, const char message[], K &&constraint) +{ + do + { + if (cin.fail()) + { + cout << fehler_meldung; + cin.clear(); + cin.ignore(); + } + cout << message << "\t"; + cin >> *result; + } while (cin.fail() || !constraint(result)); + return *result; +} + +float EinnahmenBerechnen(float *tagespreis, int *gewicht) +{ + return (*tagespreis) * (*gewicht); +} diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.exe b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.exe new file mode 100644 index 0000000..ef9d6fa Binary files /dev/null and b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.exe differ diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.txt b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.txt new file mode 100644 index 0000000..ebee35a --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 5 - Bauernhof.txt @@ -0,0 +1,29 @@ +Ergänzen Sie Ihr Bauernhof-Programm aus Kapitel 3 "Uebung 1 - Bauernhof" um folgendes: + +Erstellen Sie mit Hilfe einer switch-Anweisung ein Benutzermenü, +welches folgende 3 Funktionen aufruft: + +- 1: Tier anlegen () +- 3: Tier anzeigen () +- 2: Tier verkaufen (Tiernummer) +- 0: Programm beenden + +Das Menü soll solange wiedererscheinen, bis der Nutzer die Zahl für „Programm beenden“ eingibt (Do-While-Schleife). + +Beim Anlegen sollen folgende Daten gespeichert werden: +- Tierart +- Tiernummer +- Gewicht + +Beim Anzeigen sollen folgende Daten angezeigt werden: +- Tierart +- Tiernummer +- Gewicht +- ob das Tier noch im Bestand ist + +Beim Verkauf soll geprüft werden, ob das Tier noch im Bestand ist und ob die gespeicherte Tiernummer mit der eingegebenen Tiernummer übereinstimmt. +Es soll folgendes funktionieren: +- Eingabe des Tagespreises +- Einnahmen erhöhen sich (Gewicht * Tagespreis) +- Ausgabe der Gesamteinnahmen +- Tier ist anschließend nicht mehr im Bestand \ No newline at end of file diff --git a/Teil_1/4. Kontrollstrukturen/Uebung 6 - Continue-Anweisung.txt b/Teil_1/4. Kontrollstrukturen/Uebung 6 - Continue-Anweisung.txt new file mode 100644 index 0000000..7e5b9f3 --- /dev/null +++ b/Teil_1/4. Kontrollstrukturen/Uebung 6 - Continue-Anweisung.txt @@ -0,0 +1,4 @@ +Erstellen Sie eine Schleife, in welcher Sie alle Zahlen von 1 bis 100 ausgeben, welche durch die Zahl 2 teilbar sind. +Verwenden Sie hierfür die continue-Anweisung, um die Zahlen zu überspringen, welche nicht durch die Zahl 2 teilbar sind! + +Nähere Informationen zur continue-Anweisung finden Sie im Glossar des VHB-Kurses oder auf folgender Seite: https://en.cppreference.com/w/cpp/language/continue \ No newline at end of file diff --git a/Teil_1/5. Felder/Lösungen/Loesung Uebung 1 - Bauernhof.cpp b/Teil_1/5. Felder/Lösungen/Loesung Uebung 1 - Bauernhof.cpp new file mode 100644 index 0000000..0fe56c3 --- /dev/null +++ b/Teil_1/5. Felder/Lösungen/Loesung Uebung 1 - Bauernhof.cpp @@ -0,0 +1,22 @@ +#include + +using namespace std; + +int main() +{ +int Tiernummer[50]; + +for(int i=0; i<50; i++) +{ + Tiernummer[i]=i+1; // im ersten Feldindex Tiernummer[0] wird z.B. dieZahl 1 abgelegt. +} + +for(int i=0; i<50; i++) +{ + cout << "Tiernummer[" << i << "]: " << Tiernummer[i] << endl; // im ersten Feldindex Tiernummer[0] wird z.B. dieZahl 1 abgelegt. +} + +system("Pause"); + +} + diff --git a/Teil_1/5. Felder/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp b/Teil_1/5. Felder/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp new file mode 100644 index 0000000..17e01a1 --- /dev/null +++ b/Teil_1/5. Felder/Lösungen/Loesung Uebung 2 - Fahrenheit in Celsius.cpp @@ -0,0 +1,35 @@ +#include + +using namespace std; + +int main(int argc, char** argv) { + float celsius[10]; + float fahrenheit; + float tmp; + int schrittweite = 10; + int i = 0; + + cout << "Fahrenheit: "; + cin >> fahrenheit; + tmp = fahrenheit; + + cout << endl; + + for(i = 0; i < 10; i++) + { + celsius[i] = ((fahrenheit - 32) * 5) / 9; + fahrenheit += schrittweite; + } + + i = 0; + fahrenheit = tmp; + + while(i < 10) + { + cout << "Fahrenheit: " << fahrenheit << "\t| Celsius[" << i << "]: " << celsius[i] << endl; + fahrenheit += schrittweite; + i++; + } + return 0; +} + diff --git a/Teil_1/5. Felder/Lösungen/Loesung Uebung 3 - Sortieren.cpp b/Teil_1/5. Felder/Lösungen/Loesung Uebung 3 - Sortieren.cpp new file mode 100644 index 0000000..0ef3ab2 --- /dev/null +++ b/Teil_1/5. Felder/Lösungen/Loesung Uebung 3 - Sortieren.cpp @@ -0,0 +1,45 @@ +#include +#include + +using namespace std; + +void sortiere(string[], int); + +int main() +{ + int anzahl = 5; + string namen[anzahl]; + cout << "Bitte geben Sie 5 Namen ein:" << endl; + int i = 0; + for (i = 0; i < 5; i++) + { + cout << "Name " << i+1 << ": "; + cin >> namen[i]; + } + cout << "...... AUSGABE IN ALPHABETISCHER REIHENFOLGE ......" << endl; + sortiere(namen, anzahl); + +system("PAUSE"); +return 0; +} + +void sortiere(string namen[], int size) +{ + string tmp_name = ""; + for (int i = 0; i < size - 1; i++) + { + for (int j = i+1; j < size; j++) + { + if (namen[i] > namen[j]) { + tmp_name = namen[i]; + namen[i] = namen[j]; + namen[j] = tmp_name; + } + } + } + + for (int k = 0; k < size; k++) + { + cout << namen[k] << endl; + } +} diff --git a/Teil_1/5. Felder/Lösungen/Loesung Uebung 4 - Bubble Sort.cpp b/Teil_1/5. Felder/Lösungen/Loesung Uebung 4 - Bubble Sort.cpp new file mode 100644 index 0000000..fa09686 --- /dev/null +++ b/Teil_1/5. Felder/Lösungen/Loesung Uebung 4 - Bubble Sort.cpp @@ -0,0 +1,46 @@ +#include +#include + +using namespace std ; + +int main () +{ + int a [10] , i , zw , change ; + + cout << "unsortiert: "; + for ( i =0; i <10; i ++) + { + a [i] = rand()%100; + cout << a [i] << " "; + } + + // sortieren ( und dabei ausgeben ...) + do + { + cout << endl << "Zwischenschritt: "; + change=0; // keine Vertauschung noetig + for (i=0; i<9; i++) + if ( a [i] > a [i+1]) + { + zw = a[i]; + a[i] = a[i+1]; + a[i+1] = zw; + change = 1; // Vertauschung + } + for (i=0; i<10; i++) cout << a [i] << " "; + } + while (change); + + cout << endl; + + cout << "sortiert: "; + for ( i =0; i <10; i ++) + { + cout << a [i] << " "; + } + + cout << endl; + + system("pause"); + return 0; +} diff --git a/Teil_1/5. Felder/Uebung 1 - Bauernhof.txt b/Teil_1/5. Felder/Uebung 1 - Bauernhof.txt new file mode 100644 index 0000000..63cfb83 --- /dev/null +++ b/Teil_1/5. Felder/Uebung 1 - Bauernhof.txt @@ -0,0 +1,5 @@ +Auf dem Bauernhof können maximal 50 Tiere leben. +Legen Sie ein Feld an, dass 50 Tiernummern aufnehmen kann und +schreiben Sie eine For-Schleife, welches die Nummern 1-50 im Feld ablegt. + +Geben Sie anschließend die eingegeben Nummern und ihre Position im Feld in einer For-Schleife aus. \ No newline at end of file diff --git a/Teil_1/5. Felder/Uebung 2 - Fahrenheit in Celsius.txt b/Teil_1/5. Felder/Uebung 2 - Fahrenheit in Celsius.txt new file mode 100644 index 0000000..a39c0e7 --- /dev/null +++ b/Teil_1/5. Felder/Uebung 2 - Fahrenheit in Celsius.txt @@ -0,0 +1,11 @@ +Verwenden Sie als Vorlage Ihr Programm "Uebung 2 - Fahrenheit in Celsius" aus Kapitel 4 +und ändern Sie es wie folgt ab: + +Sie möchten nun die Celsiuswerte in einem Feld hinterlegen. +Legen Sie ein Feld an, dass 10 Celsiuswerte aufnehmen kann. +Hierbei wird der eingegebene Fahrenheitswerte jeweils in 10er Schritten erhöht. + +Realisieren Sie dies mit einer for-Schleife. + +Geben Sie anschließend die berechneten Celsiuswerte mit dem dazugehörigen Fahrenheitswert +und der Position im Feld in einer while-Schleife aus. \ No newline at end of file diff --git a/Teil_1/5. Felder/Uebung 3 - Sortieren.txt b/Teil_1/5. Felder/Uebung 3 - Sortieren.txt new file mode 100644 index 0000000..742fe5b --- /dev/null +++ b/Teil_1/5. Felder/Uebung 3 - Sortieren.txt @@ -0,0 +1,29 @@ +Folgendes Programm ist gegeben: + +#include +#include + +using namespace std; + +int main(int argc, char *argv[]) +{ + string namen[5]; + cout << "Bitte geben Sie 5 Namen ein:" << endl; + for (int i = 0; i < 5; i++) + { + cout << "Name " << i+1 << ": "; + cin >> namen[i]; + } + +system("PAUSE"); +return 0; +} + + +Bitte erweitern Sie das Programm: + +- Deklarieren und definieren Sie die Funktion sortiere mit 2 Übergabeparameter: + Array mit namen und size als integer. Wobei size die Anzahl der Namen repräsentiert. + Diese Funktion hat die Aufgabe, die Namen in alphabetischer Reihenfolge zu sortieren. +- Rufen Sie die Funktion im Programm auf +- Geben Sie die sortierte Liste mit Namen wieder aus. diff --git a/Teil_1/5. Felder/Uebung 4 - Bubble Sort.txt b/Teil_1/5. Felder/Uebung 4 - Bubble Sort.txt new file mode 100644 index 0000000..9abd13c --- /dev/null +++ b/Teil_1/5. Felder/Uebung 4 - Bubble Sort.txt @@ -0,0 +1,5 @@ +Sortieren Sie ein mit Zufallszahlen belegtes Array beliebiger Größe mit dem +Bubble-Sort Verfahren. +Es soll zuerst die unsortierte Ausgabe erscheinen. +Geben Sie während dem sortieren immer den Zwischenschritt aus. +Zum Schluss soll die sortierte Ausgabe erscheinen. \ No newline at end of file diff --git a/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Einkaufsliste.txt b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Einkaufsliste.txt new file mode 100644 index 0000000..8203db1 --- /dev/null +++ b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Einkaufsliste.txt @@ -0,0 +1,11 @@ +Erstellen Sie eine Einkaufsliste für maximal 10 Produkte. +Hierfür soll der Produktname und Preis eingegeben werden und anschließend in einem Feld abgespeichert werden. +Erstellen Sie ein Menü, was folgende Funktionen hat: + +- Position erfassen +- Positionen anzeigen +- Positionen sortieren +- Beenden + +Im Menü soll außerdem die aktuelle Anzahl an Positionen angezeigt werden. +Die Sortierung erfolgt anhand des Preises (der Name soll dementsprechend mitsortiert werden). diff --git a/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Lösung/Temperatur.cpp b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Lösung/Temperatur.cpp new file mode 100644 index 0000000..cf0160a --- /dev/null +++ b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Lösung/Temperatur.cpp @@ -0,0 +1,188 @@ +#include +#include + +using namespace std; + +void ausgabeKaltWarm(string,int); +void jahresDurchschnitt(int[]); +int waermsterMonatImJahr(int[]); +void sortieren(string[], int[]); + +int main(int argc, char** argv) { + string monat[] = {"Januar", "Februar", "M\204rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; + int temperatur[] = {-1, 0, 4, 8, 13, 17, 21, 24, 19, 11, 9, 5}; + int eingabe = 1; + int tmp = 0; + + while(eingabe != 0) + { + system("cls"); + cout << "[1] Temperatur vom Monat ausgeben (Texteingabe)" << endl; + cout << "[2] Temperatur vom Monat ausgeben (Auswahl)" << endl; + cout << "[3] Durchschnittstemperatur ausgeben" << endl; + cout << "[4] W\204rmster Monat ausgeben" << endl; + cout << "[5] Temperatur sortiert ausgeben" << endl; + cout << "[0] Beenden" << endl << endl; + cout << "Treffen Sie Ihre Auswahl: "; + + cin >> eingabe; + + switch(eingabe) + { + case 1: + { + system("cls"); + + string eingabe_monat; + tmp = 0; + + cout << "Bitte geben Sie einen Monat ein: "; + cin >> eingabe_monat; + + for(int i = 0; i < 12; i++) + { + if(eingabe_monat == monat[i]) + { + tmp = 1; + + ausgabeKaltWarm(monat[i],temperatur[i]); + break; + } + } + if(tmp != 1) + { + cerr << endl << "Monat nicht gefunden" << endl << endl; + } + + system("pause"); + break; + } + case 2: + { + system("cls"); + + for(int i = 0; i < 12; i++) + { + cout << "[" << i+1 << "]" << monat[i] << endl; + } + + cout << endl << "Treffen Sie Ihre Auswahl: "; + cin >> tmp; + + if(tmp > 12 || tmp < 1) + { + cerr << endl << "Monat nicht gefunden" << endl << endl; + } + else + { + ausgabeKaltWarm(monat[tmp-1],temperatur[tmp-1]); + } + system("pause"); + break; + } + case 3: + { + system("cls"); + jahresDurchschnitt(temperatur); + system("pause"); + break; + } + case 4: + { + system("cls"); + tmp = waermsterMonatImJahr(temperatur); + cout << "Der w\204mste Monat im Jahr ist " << monat[tmp] << " mit " << temperatur[tmp] <<" Grad" << endl << endl; + system("pause"); + break; + } + case 5: + { + system("cls"); + sortieren(monat, temperatur); + system("pause"); + break; + } + case 0: + { + cout << endl << "Auf Wiedersehen!" << endl; + break; + } + default: + { + cout << endl << "Falsche Eingabe!" << endl << endl; + system("pause"); + } + } + } + return 0; +} + +void ausgabeKaltWarm(string eingabe_monat, int temperatur) +{ + cout << endl << "Im " << eingabe_monat << " war es im Durchschnitt " << temperatur << " Grad"; + + if(temperatur > 0) + cout << " warm"; + else if(temperatur < 0) + cout << " kalt"; + + cout << endl << endl; +} + +void jahresDurchschnitt(int temp[]) +{ + float summe = 0; + for(int i = 0; i < 12; i++) + { + summe = summe + temp[i]; //summe += temp[i] + } + cout << "Die Durchschnittstemperatur im Jahr betr\204gt " << (summe / 12) << " Grad" << endl << endl; +} + +int waermsterMonatImJahr(int temp[]) +{ + int max = 0; + int z = 0; + for(int i = 0; i < 12; i++) + { + if(temp[i] > max) + { + max = temp[i]; + z = i; + } + } + return z; +} + +void sortieren(string mon[], int temp[]) +{ + string tmp_monat; + int tmp_temperatur; + + for(int i = 0; i < 12; i++) + { + for(int j = (i+1); j < 12; j++) + { + if(temp[i] > temp[j]) + { + tmp_monat = mon[i]; + mon[i] = mon[j]; + mon[j] = tmp_monat; + + tmp_temperatur = temp[i]; + temp[i] = temp[j]; + temp[j] = tmp_temperatur; + } + } + } + + int x = 0; + do + { + cout << temp[x] << " Grad im Monat " << mon[x] << endl; + x++; + } + while(x<12); + + cout << endl; +} diff --git a/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Temperatur.txt b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Temperatur.txt new file mode 100644 index 0000000..d5aa567 --- /dev/null +++ b/Teil_1/5b. Beispielanwendung Prozedurale Programmierung/Temperatur.txt @@ -0,0 +1,14 @@ +Während des Jahres haben Sie die Durchschnittstemperatur der einzelnen Monate erfasst. +Sie wollen nun ein Programm schreiben, dass Ihnen dabei hilft, diese Daten auszugeben. +Erstellen Sie ein Programm, das ein Menü ausgibt. Es soll folgende Auswahlmöglichkeiten geben: + +- Bei Eingabe eines Monats soll die dementsprechende Durchschnittstemperatur ausgegeben werden + o Die Eingabe soll einmal als Texteingabe (z.B. Eingabe: „August“) + o und als Auswahl (z.B. Auswahl: 8 --> Temperatur von August) realisiert werden +- Es soll die Durchschnittstemperatur aller Monate berechnet werden +- Es soll der heißeste Monat im Jahr ausgegeben werden +- Es sollen alle Monate aufsteigend sortiert mit deren Temperaturen ausgegeben werden +- Bei Eingabe von 0 soll eine Verabschiedung ausgegeben werden und das Programm wird beendet +- Bei Falscheingabe im Menü soll eine Meldung erscheinen + +Sie können für die Temperaturen der einzelnen Monate fiktive Zahlen benutzen. diff --git a/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 1 - Tiere.cpp b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 1 - Tiere.cpp new file mode 100644 index 0000000..a6419c1 --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 1 - Tiere.cpp @@ -0,0 +1,38 @@ +#include +#include + +using namespace std; + +class Tier +{ +private: + float Einnahme; + float Gewicht; + float Tagespreis; + +public: + void Daten_abfragen() //Deklaration und Definition der Methode Daten_abfragen + { + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; + } + + void Einnahme_berechnen(){ //Deklaration und Definition der Methode Einnahme_berechnen + Einnahme = Gewicht*Tagespreis; + cout << "Einnahme: " << Einnahme << endl; + } +}; + +int main(){ + Tier schwein; + schwein.Daten_abfragen(); //Methodenaufrufe + schwein.Einnahme_berechnen(); + + cout << endl << endl; + + system("PAUSE"); + return 0; +} + diff --git a/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 2 - Tiere.cpp b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 2 - Tiere.cpp new file mode 100644 index 0000000..7493169 --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 2 - Tiere.cpp @@ -0,0 +1,40 @@ +#include +#include + +using namespace std; + +class Tier +{ +private: + float Einnahme; + float Gewicht; + float Tagespreis; + +public: + void Daten_abfragen() //Deklaration und Definition der Methode Daten_abfragen + { + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; + } + + void Einnahme_berechnen(){ //Deklaration und Definition der Methode Einnahme_berechnen + Einnahme = Gewicht*Tagespreis; + cout << "Einnahme: " << Einnahme << endl; + } +}; + +int main(){ + Tier tiere[2]; + tiere[0].Daten_abfragen(); + tiere[0].Einnahme_berechnen(); + + tiere[1].Daten_abfragen(); + tiere[1].Einnahme_berechnen(); + + cout << endl << endl; + + system("PAUSE"); + return 0; +} \ No newline at end of file diff --git a/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 3 - Artikel.cpp b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 3 - Artikel.cpp new file mode 100644 index 0000000..c8d6010 --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 3 - Artikel.cpp @@ -0,0 +1,76 @@ +#include +#include +using namespace std; + + +class Artikel +{ +private: + string Bezeichnung; + float Preis; + +public: + + //getter + string get_Bezeichnung() + { + return Bezeichnung; + } + + float get_Preis() + { + return Preis; + } + + //setter + void set_Bezeichnung() + { + cout << "Geben Sie die Artikelbezeichnung ein: "; + cin >> Bezeichnung; + } + + void set_Preis() + { + cout << "Geben Sie den Artikelpreis ein: "; + cin >> Preis; + } + + //Methoden + void Daten_ausgeben() //Deklaration und Definition der Methode Daten_ausgeben + { + cout << "Der Artikel " << get_Bezeichnung() << " kostet " << get_Preis() << " Euro." << endl; + } + + void Daten_erfassen() //Deklaration und Definition der Methode Daten_erfassen + { + set_Bezeichnung(); + set_Preis(); + } + + void Gesamtpreis_berechnen(int az)//Deklaration und Definition der Methode Gesamtpreis_berechnen + { + cout << "Gesamtpreis: " << az*get_Preis() << endl; + } + +}; + +int main() +{ + Artikel art; + int anzahl; + + art.Daten_erfassen(); + + art.Daten_ausgeben(); + + cout << "Geben Sie die Stueckzahl ein: "; + cin >> anzahl; + + art.Gesamtpreis_berechnen(anzahl); + + cout << endl << endl; + + system("PAUSE"); + return 0; +} + diff --git a/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 4 - Person.cpp b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 4 - Person.cpp new file mode 100644 index 0000000..0cb0f81 --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Lösungen/Loesung Uebung 4 - Person.cpp @@ -0,0 +1,44 @@ +#include +#include + +using namespace std ; + +class Person +{ +private: + string vname, name; + int alter; + +public: + void einlesen(); + void vergleiche(Person); +}; + +void Person::einlesen() +{ + cout << "Vorname : "; + cin >> vname ; + cout << "Name : "; + cin >> name ; + cout << "Alter : "; + cin >> alter ; +} + +void Person::vergleiche(Person p) +{ + if (alter > p.alter) + cout << vname << " " << name << " ist der aeltere." << endl ; + else + cout << p.vname << " " << p.name << " koennte der aeltere sein." << endl ; +} + +int main ( void ) +{ + Person p1, p2 ; + + p1.einlesen(); + cout << endl ; + p2.einlesen(); + + p1.vergleiche(p2); +} diff --git a/Teil_1/7. Das Klassenkonzept/Uebung 1 - Bauernhof.txt b/Teil_1/7. Das Klassenkonzept/Uebung 1 - Bauernhof.txt new file mode 100644 index 0000000..c7d1558 --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Uebung 1 - Bauernhof.txt @@ -0,0 +1,36 @@ +Wandeln Sie folgenden Quellcode in ein objektorientiertes Programm um. +Erzeugen Sie in main ein Tierobjekt und rufen Sie für dieses Objekt die Methoden auf. + +#include +#include + +using namespace std; + +float Einnahme=0; // 3 globale Variablenen deklarieren und initialisieren +float Gewicht=0; +float Tagespreis=0; + +void Daten_abfragen() //Deklaration und Definition der Methode Daten_abfragen +{ + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; +} + +void Einnahme_berechnen() //Deklaration und Definition der Methode Einnahme_berechnen +{ + Einnahme = Gewicht*Tagespreis; + cout << "Einnahme: " << Einnahme< gibt die Artikelbezeichnung zurück +- get_Preis() -> gibt den Artikelpreis zurück +- set_Bezeichnung() -> setzt die Bezeichnung für den Artikel +- set_Preis() -> setzt den Preis für den Artikel +- Daten_erfassen() -> setzt die Bezeichnung und den Preis mit Hilfer der Setter-Methoden +- Daten_ausgeben() -> gibt die Bezeichnung und den Preis für den Artikel aus +- Gesamtpreis_berechnen() -> Es wird eine Stückzahl übergeben. + Der Gesamtpreis (Stückzahl*Preis) wird ermittelt und ausgegeben + +Erstellen Sie im Hauptprogramm ein Objekt vom Typ Artikel. +Erfassen Sie die Daten und geben sie anschließend diese nochmal aus. +Der Benutzer soll anschließend eine Stückzahl eingeben können, wodurch dann der Gesamtpreis ermittelt wird. diff --git a/Teil_1/7. Das Klassenkonzept/Uebung 4 - Person.txt b/Teil_1/7. Das Klassenkonzept/Uebung 4 - Person.txt new file mode 100644 index 0000000..1cba6bb --- /dev/null +++ b/Teil_1/7. Das Klassenkonzept/Uebung 4 - Person.txt @@ -0,0 +1,7 @@ +Erstellen Sie ein Programm mit einer Klasse namens Person, die einige Daten (Name, +Vorname, Alter) einer Person speichert. Eine Methode namens einlesen in der Klasse +die Attribute befüllen. +Eine Methode in der Klasse namens vergleich soll erstellt werden. +Eine Person ruft diese Methode auf und zusätzlich soll als Übergabeparameter +eine weitere Person vorhanden sein. +Dort soll überprüft und ausgegeben werden, welcher der beiden Personen älter ist. \ No newline at end of file diff --git a/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 1 - Bauernhof.cpp b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 1 - Bauernhof.cpp new file mode 100644 index 0000000..b1f4b8e --- /dev/null +++ b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 1 - Bauernhof.cpp @@ -0,0 +1,54 @@ +#include +#include + +using namespace std; + +class Tier +{ + +private: + float Einnahme; + float Gewicht; + float Tagespreis; + + void Daten_abfragen() //Deklaration und Definition der Methode Daten_abfragen + { + cout << "Wie steht der Tagespreis? " << endl; + cin >> Tagespreis; + cout << "Wie ist das Gewicht? " << endl; + cin >> Gewicht; + } + +public: + //Konstruktor + Tier() + { + Daten_abfragen(); + }; + Tier(float g, float t):Gewicht(g), Tagespreis(t){ } + + //Methode + void Einnahme_berechnen() //Deklaration und Definition der Methode Einnahme_berechnen + { + Einnahme = Gewicht*Tagespreis; + cout << "Einnahme: " << Einnahme << endl; + } + +}; + +int main() +{ + Tier schwein(19,2.5); + cout << "Schwein "; + schwein.Einnahme_berechnen(); + + Tier kuh; + cout << "Kuh "; + kuh.Einnahme_berechnen(); + + cout << endl << endl; + + system("PAUSE"); + return 0; +} + diff --git a/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 2 - Auto.cpp b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 2 - Auto.cpp new file mode 100644 index 0000000..3bee7bc --- /dev/null +++ b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Lösungen/Loesung Uebung 2 - Auto.cpp @@ -0,0 +1,51 @@ +#include +#include + +using namespace std; + +class Auto +{ +private: + string marke; + int kilometerstand; + static int anzahl_fahrten; + +public: + Auto(string m, int k) : marke(m), kilometerstand(k) { } + ~Auto() + { + cout << endl << "Objekt entfernt. " << endl; + } + + void fahren(int gefahren) //Deklaration und Definition der Methode Daten_abfragen + { + kilometerstand += gefahren; + anzahl_fahrten++; + } + + void daten_ausgeben() + { + cout << marke << ", aktueller Kilometerstand: " << kilometerstand << endl; + cout << "Anzahl an Fahrten: " << anzahl_fahrten << endl; + } + +}; + +int Auto::anzahl_fahrten = 0; + +int main() +{ + Auto bmw("BMW",1500); + bmw.fahren(70); + bmw.daten_ausgeben(); + bmw.fahren(80); + bmw.daten_ausgeben(); + bmw.fahren(250); + bmw.daten_ausgeben(); + + cout << endl << endl; + + system("PAUSE"); + return 0; +} + diff --git a/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 1 - Bauernhof.txt b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 1 - Bauernhof.txt new file mode 100644 index 0000000..076a58f --- /dev/null +++ b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 1 - Bauernhof.txt @@ -0,0 +1,8 @@ +Verwenden Sie als Vorlage Ihr Programm "Uebung 1 - Bauernhof" aus Kapitel 7 +und ändern Sie es wie folgt ab: + +Verwenden Sie zur Initialisierung der Instanzen einen Konstruktor mit Elementinitialisierungsliste +und einen Standardkonstruktor, welcher die Daten abfragt. + +Erstellen Sie dann in der main-Funktion zwei Objekte. Verwenden Sie hier die beiden Konstruktoren. +Rufen Sie anschließend die Methode Einnahme_berechnen auf. diff --git a/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 2 - Auto.txt b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 2 - Auto.txt new file mode 100644 index 0000000..31e4397 --- /dev/null +++ b/Teil_1/8. Konstruktoren, Elementinitialisierung, Überladen, Destruktor, Klassenvariablen/Uebung 2 - Auto.txt @@ -0,0 +1,19 @@ +Erstellen Sie eine Klasse Auto, welche folgende Eigenschaften und Methoden hat: + +Eigenschaften: + +- Marke +- Kilometerstand + +Methode: + +- fahren() -> Hat als Übergabeparameter eine Ganzzahl, welche den Kilometerstand erhöht + +Verwenden Sie zur Initialisierung der Instanzen einen Konstruktor mit Elementinitialisierungsliste, welche die zwei Attribute annimmt. + +Zusätzlich soll eine Klassenvariable deklariert werden, welche sich merkt, wie oft man gefahren ist. + +Es sollen drei Fahrten erfolgen. Nach jeder Fahrt sollen die Daten ausgegeben werden. + +Zuletzt soll ein Destruktor erstellt werden, welcher zum Schluss des Programms aufegrufen wird und ausgibt, +dass das Objekt entfernt wurde. diff --git a/Teil_1/9. Vererbung/Lösungen/Loesung Uebung 1 - Tier.cpp b/Teil_1/9. Vererbung/Lösungen/Loesung Uebung 1 - Tier.cpp new file mode 100644 index 0000000..219ee13 --- /dev/null +++ b/Teil_1/9. Vererbung/Lösungen/Loesung Uebung 1 - Tier.cpp @@ -0,0 +1,52 @@ +#include +#include + +using namespace std; + +class Tier +{ +protected: + float anzahl; + +public: + Tier(){};//Defaultkonstruktor + Tier (int anz):anzahl(anz){}; //Konstruktor mit Elementinitialisierungsliste +}; + +class Schlachtvieh: public Tier +{ +private: + float gewicht; +public: + Schlachtvieh(int anz, float gew):Tier(anz),gewicht(gew){}; + void datenausgeben() + { + cout << "Es sind " << anzahl << " Tiere mit je " << gewicht << " kg vorhanden" << endl; + } +}; + +class Milchvieh: public Tier +{ +private: + float milchleistung; + +public: + Milchvieh(int anz, float m_l):Tier(anz), milchleistung(m_l){}; + + void datenausgeben() + { + cout << "Es sind " << anzahl << " Tiere mit durchschnittlicher Milchleistung von " << milchleistung << " l vorhanden"< + +using namespace std; + +class KFZ +{ +protected: + string marke; + int kmstand; +}; + +class Auto : public KFZ +{ +private: + int passagiere; +public: + Auto() + { + cout << "Neues Auto wird erstellt." << endl; + cout << "Marke: "; + cin >> marke; + cout << "Passagiere: "; + cin >> passagiere; + } + + void einsteigen(int personen) + { + passagiere += personen; + } + + void ausgabe() + { + cout << "Marke: " << marke << endl; + cout << "Passagiere: " << passagiere << endl; + } +}; + +class LKW : public KFZ +{ +private: + float tonnen; +public: + LKW() + { + cout << "Neuer LKW wird erstellt." << endl; + cout << "Marke: "; + cin >> marke; + cout << "Tonnen: "; + cin >> tonnen; + } + + void beladen(float gewicht) + { + tonnen += gewicht; + } + + void ausgabe() + { + cout << "Marke: " << marke << endl; + cout << "Tonnen: " << tonnen << endl; + } +}; + +int main() +{ + Auto autos[3] = Auto(); + LKW lkws[2] = LKW(); + + int personen; + float gewicht; + + cout << endl << endl; + + for(int i = 0; i<3; i++) + { + cout << "Auto Nr. " << i+1 << endl; + cout << "Anzahl Personen die einsteigen: "; + cin >> personen; + autos[i].einsteigen(personen); + } + + for(int i = 0; i<2; i++) + { + cout << "LKW Nr. " << i+1 << endl; + cout << "Beladen des LKWs. Gewicht in Tonnen angeben: "; + cin >> gewicht; + lkws[i].beladen(gewicht); + } + + cout << endl << endl; + + for(int i = 0; i <3; i++) + { + cout << "Ausgabe Auto Nr. " << i+1 << endl; + autos[i].ausgabe(); + } + + for(int i = 0; i <2; i++) + { + cout << "Ausgabe LKW Nr. " << i+1 << endl; + lkws[i].ausgabe(); + } + + system("pause"); + return 0; +} + diff --git a/Teil_1/9. Vererbung/Uebung 1 - Tier.txt b/Teil_1/9. Vererbung/Uebung 1 - Tier.txt new file mode 100644 index 0000000..9098c82 --- /dev/null +++ b/Teil_1/9. Vererbung/Uebung 1 - Tier.txt @@ -0,0 +1,40 @@ +Gegeben ist folgendes Programm: + +#include +#include + +using namespace std; + +class Tier +{ +public: + float Anzahl; + float Gewicht; + + void datenausgeben() + { + cout <<"Es sind "< Erfasst die Daten der Basis-/abgeleiteten Klasse + +Methode: +- Ausgabe() -> Gibt alle Daten aus +- Einsteigen() -> Erhöht die Anzahl der Passagiere + +LKW hat folgende Eigenschaften: + +Attribut: +- Tonnen + +Konstruktor: +- Standardkonstruktor -> Erfasst die Daten der Basis-/abgeleiteten Klasse + +Methode: +- Ausgabe() -> Gibt alle Daten aus +- Beladen() -> Einene Übergabeparameter, erhöht die Tonnen + + +Erstellen Sie in der Main-Funktion 2 Felder. +Das erste Feld kann 3 Autos aufnehmen, das zweite Feld kann 2 LKWs aufnehmen. +Erstellen Sie jeweils 3 Instanzen der beiden Felder. +Rufen Sie Aanschließend die Methode einsteigen und beladen aller Instanzen auf, +wobei die Eingabe der dafür nötigen Daten in der Main-Funktion abgefragt werden. +Geben Sie zum Schluss nochmal alle Daten aus. \ No newline at end of file diff --git a/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Aufgabe_Tiere.txt b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Aufgabe_Tiere.txt new file mode 100644 index 0000000..8f81e9a --- /dev/null +++ b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Aufgabe_Tiere.txt @@ -0,0 +1,31 @@ +Erzeugen Sie in main() ein Feld von 100 Tierobjekten. + +Erstellen Sie mit Hilfe einer switch-Anweisung ein Benutzermenü mit 4 Punkten: + +- 1: Tier anlegen () +- 3: Tier anzeigen () +- 2: Tier verkaufen () +- 0: Programm beenden + +Das Menüs soll solange wieder erscheinen, bis der Nutzer die Zahl für „Programm beenden“ eingibt (while-schleife) + +Die Tiernummer ist eine laufende Nummer, welche sich erhöht, wenn der Benutzer ein Tier angelegt hat. + +Beim Anlegen sollen folgende Daten für ein Tier gespeichert werden: +- Tiernummer +- Tierart +- Gewicht + +Beim Anzeigen sollen alle Tiere mit folgenden Daten angezeigt werden: +- Tiernummer +- Tierart +- Gewicht +- ob das Tier noch im Bestand ist + +Beim Verkauf soll geprüft werden, ob das Tier noch im Bestand ist und ob die gespeicherte Tiernummer mit der eingegebenen Tiernummer übereinstimmt. +Falls nicht soll die Meldung kommen, dass die Tiernummer falsch ist oder dass das Tier nicht im Bestand ist. +Es soll folgendes funktionieren: +- Eingabe des Tagespreises +- Gesamteinnahmen erhöhen sich (Gewicht * Tagespreis) +- Ausgabe der Gesamteinnahmen (hier wird die Gesamte Einnahme aller verkauften Tiere ausgegeben) +- Tier ist anschließend nicht mehr im Bestand \ No newline at end of file diff --git a/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Bibliothek.txt b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Bibliothek.txt new file mode 100644 index 0000000..ce71c80 --- /dev/null +++ b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Bibliothek.txt @@ -0,0 +1,28 @@ +Es soll ein Programm zur Bibliotheksverwaltung geschrieben werden, wo die Daten eines +Benutzers am Anfang des Programmstars abgefragt werden. Anschließend soll ein Menü +erscheinen, wo der Benutzer navigieren kann. Es können folgendes funktionieren: + + - Personendaten erfassen + - Buch ausleihen + - Ausleihe verlängern + - Alle Daten ausgeben + - Buch zurückgeben + - Beenden + +Die Personendaten werden komplett neu erfasst. +Die nachfolgenden Funktionalitäten können nur genutzt werden, wenn der Ausleiher noch kein +Buch hat, ansonsten erscheint eine Meldung, dass der Ausleiher bereits ein Buch hat. + + - Die Person hat die Möglichkeit, maximal eines von 3 Büchern auszuleihen. Bei + den Büchern sind nur der Titel und der Autor hinterlegt. Beim Ausleihen wird ein + Rückgabedatum angegeben, bis wann der Ausleiher das Buch zurückgeben soll + (Falsches Datum wird nicht abgefragt). + - Die Ausleihe kann um 1 Monat verlängert werden. Beginnt die Ausleihe am + Monatsende, so wird das jeweilige Monat ebenfalls auf das Monatsende gesetzt. + • Beispiel 1: Ausleihe ist 31.03.16 ? Verlängerung ? Neues Rückgabedatum: 30.04.16 + • Beispiel 2: Ausleihe ist 30.01.16 ? Verlängerung ? Neues Rückgabedatum: 28.02.16 + • Beispiel 3: Ausleihe ist 20.12.16 ? Verlängerung ? Neues Datum ist 20.01.17 + - Bei der Datenausgabe werden alle Daten von der Ausleihe (Person, Buch, Rückgabedatum) ausgegeben. + - Wenn das Buch zurückgegeben wird, kann der Ausleiher wieder ein neues Buch ausleihen. + +Beim Beenden des Programms soll der Benutzer verabschiedet werden. \ No newline at end of file diff --git a/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Bibliothek.cpp b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Bibliothek.cpp new file mode 100644 index 0000000..fc8b27e --- /dev/null +++ b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Bibliothek.cpp @@ -0,0 +1,302 @@ +#include +#include + +using namespace std; + +class Person { +private: + string vorname; + string name; + string strasse; + unsigned int hausnr; + string ort; + unsigned int plz; +public: + Person() {}; + void datenErfassen(); + void datenAusgeben(); +}; + +void Person::datenErfassen() +{ + cout << "--Datenerfassung--" << endl; + cout << "Vorname: "; + cin >> vorname; + cout << "Nachname: "; + cin >> name; + cout << "Strasse: "; + cin >> strasse; + cout << "Hausnummer: "; + cin >> hausnr; + cout << "PLZ: "; + cin >> plz; + cout << "Ort: "; + cin >> ort; + cout << endl << "Person erfasst." << endl; +} + +void Person::datenAusgeben() +{ + cout << vorname << " " << name << endl; + cout << strasse << " " << hausnr << endl; + cout << plz << " " << ort << endl; +} + +class Buch{ +private: + string titel; + string autor; +public: + Buch() {}; + Buch(string t,string a) : titel(t), autor(a) {}; + void datenAusgeben(); +}; + +void Buch::datenAusgeben() +{ + cout << titel << " (von " << autor << ")"; +} + +class Datum{ +private: + short tag; + short monat; + unsigned int jahr; +public: + void datumErfassen(); + void datenAusgeben(); + void umEinenMonatErhoehen(); +}; + +void Datum::datumErfassen() +{ + cout << "Tag: "; + cin >> tag; + cout << "Monat: "; + cin >> monat; + cout << "Jahr: "; + cin >> jahr; +} + +void Datum::datenAusgeben() +{ + cout << tag << "." << monat << "." << jahr << endl; +} + +void Datum::umEinenMonatErhoehen() +{ + if(monat == 12) + { + jahr = jahr+1; + monat=(monat%12)+1; + } + else if(tag == 28 && monat == 2) + { + tag = 31; + monat+=1; + } + else if(tag <= 28) + { + monat+=1; + } + else if(tag > 28 && tag <= 31 && monat == 1) + { + tag = 28; + monat+=1; + } + else if(tag==31 && monat != 7) + { + switch (monat) + { + case 3: + case 5: + case 8: + case 10: + { + tag=30; + monat+=1; + break; + } + } + } + else if(tag==30) + { + switch (monat) + { + case 4: + case 6: + case 9: + case 11: + { + tag=31; + monat+=1; + break; + } + } + } + else + monat+=1; +} + +class Ausleihe { +private: + Person ausleiher; + Buch ausgeliehenesBuch; + Datum rueckgabe; + bool hat_buch; +public: + Ausleihe() { hat_buch = false; }; + void datenErfassen(Person,Buch,Datum); + void datenAusgeben(); + void verlaengere(); + void zurueckgeben(); + bool get_hat_buch(); +}; + +void Ausleihe::datenErfassen(Person p, Buch b, Datum d) +{ + ausleiher = p; + ausgeliehenesBuch = b; + rueckgabe = d; + hat_buch = true; +} + +void Ausleihe::datenAusgeben() +{ + ausleiher.datenAusgeben(); + cout << endl << "Ausgeliehenes Buch: "; + ausgeliehenesBuch.datenAusgeben(); + cout << endl << "Rueckgabe bis: "; + rueckgabe.datenAusgeben(); +} + +void Ausleihe::verlaengere() +{ + rueckgabe.umEinenMonatErhoehen(); + cout << "Ausleihe um 1 Monat verlaengert." << endl; +} + +void Ausleihe::zurueckgeben() +{ + cout << "Buch "; + ausgeliehenesBuch.datenAusgeben(); + cout << " wurde zuruckgegeben." << endl; + hat_buch = false; +} + +bool Ausleihe::get_hat_buch() +{ + return hat_buch; +} + +int main() +{ + Person p; + int auswahl; + Buch b[3] = {{"Titel 1", "Autor a"},{"Titel 2", "Autor b"},{"Titel 2", "Autor c"}}; + Ausleihe a; + Datum d; + + p.datenErfassen(); + system("pause"); + + do + { + system("cls"); + cout << "--MENUE--" << endl; + cout << "[1] Personendaten erfassen" << endl; + cout << "[2] Buch ausleihen" << endl; + cout << "[3] Ausleihe verlaengern" << endl; + cout << "[4] Daten ausgeben" << endl; + cout << "[5] Buch zurueckgeben" << endl; + cout << "[0] Beenden" << endl; + cout << endl << "Auswahl: "; + cin >> auswahl; + switch(auswahl) + { + case 1: + { + system("cls"); + p.datenErfassen(); + system("pause"); + system("cls"); + break; + } + case 2: + { + system("cls"); + if(a.get_hat_buch() == true) + { + cout << "Ausleihe nicht moeglich. Person hat bereits ein Buch ausgeliehen" << endl; + } + else + { + cout << "Welches Buch soll ausgeliehen werden?" << endl; + for(int i=0;i<3;i++) + { + cout << "[" << i+1 << "] "; + b[i].datenAusgeben(); + cout << endl; + } + cout << endl << "Auswahl: "; + cin >> auswahl; + + system("cls"); + cout << "Bis wann soll das Buch zurueckgegeben werden?" << endl; + d.datumErfassen(); + + a.datenErfassen(p,b[auswahl-1],d); + } + + system("pause"); + system("cls"); + break; + } + case 3: + { + system("cls"); + if(a.get_hat_buch() == true) + a.verlaengere(); + else + cout << "Person hat kein Buch ausgeliehen." << endl; + system("pause"); + system("cls"); + break; + } + case 4: + { + system("cls"); + if(a.get_hat_buch() == true) + a.datenAusgeben(); + else + cout << "Person hat kein Buch ausgeliehen." << endl; + system("pause"); + system("cls"); + break; + } + case 5: + { + system("cls"); + if(a.get_hat_buch() == true) + a.zurueckgeben(); + else + cout << "Person hat kein Buch ausgeliehen." << endl; + system("pause"); + system("cls"); + break; + } + case 0: + { + cout << endl << "Auf Wiedersehen" << endl; + return 0; + } + default: + { + cout << endl << "Falsche Eingabe!" << endl; + system("pause"); + } + } + }while(auswahl!=0); + + return 0; +} diff --git a/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Tiere.cpp b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Tiere.cpp new file mode 100644 index 0000000..2147f8b --- /dev/null +++ b/Teil_1/9b. Beispielanwendung Objektorientierte Programmierung/Lösungen/Tiere.cpp @@ -0,0 +1,154 @@ +#include +#include + +using namespace std; + +class Tier // Klasse Tier +{ +private: + // Tiereigenschaften + int Tiernummer; + string Art; + float Gewicht; + static float Gesamteinnahme; + float Tagespreis; + bool Bestand; + +public: + // Methoden der Klasse + void TierAnlegen(void); + void TierAnzeigen(void); + void TierVerkaufen(void); + + //getter + int get_Nr() { return Tiernummer; } + bool get_Bestand() { return Bestand; } + + //setter + void set_Nr(int nr) { Tiernummer = nr; } + +}; + +// Funktion zum Anlegen + +void Tier::TierAnlegen(void) +{ + cout << "Bitte geben Sie die Tierart ein: "; + cin >> Art; + cout << "Bitte geben Sie das Gewicht des Tieres an: "; + cin >> Gewicht; + Bestand = true; //Tier ist im Bestand +} ; + +// Funktion um Daten anzuzeigen + +void Tier::TierAnzeigen(void) +{ + cout << "Tiernummer: " << Tiernummer << endl; + cout << "Tierart: " << Art << endl; + cout << "Gewicht: " << Gewicht << endl; + cout << "Noch im Bestand? (1 = ja, 0 = nein): " << Bestand << endl; +}; + +void Tier::TierVerkaufen() +{ + cout << "Wie steht der Tagespreis?"<< endl; + cin >> Tagespreis; + Gesamteinnahme += Gesamteinnahme + (Gewicht*Tagespreis); + cout << "Gesamteinnahmen: " << Gesamteinnahme << endl; + Bestand = false; + cout << endl << endl; +}; + +float Tier::Gesamteinnahme = 0; + +int main(void) +{ +int s=0, eing, nr; // deklariert integer s auf null, wird für das menü werwendet +int i = 0; +Tier tiere[100] = Tier(); + +cout << "Herzlich willkommen bei der Bauernhofverwaltung" << endl << endl << "Bitte treffen Sie Ihre Auswahl im Menue..." << endl << endl << endl; + +// While - Schleife die das Menü und Untermenüs enthält + +while (s == 0) { + + system("cls"); + + //Das Menue + cout << "[1] Tier anlegen" << endl; + cout << "[2] Tier anzeigen" << endl; + cout << "[3] Tier verkaufen" << endl; + cout << "[0] Beende" << endl<> eing; + + //switch Abfrage lädt in die einzelnen Menüpunkte + + switch(eing) { + + case 1 : { + system("cls"); + tiere[i].TierAnlegen(); // Funktion um ein Tier anzulegen + tiere[i].set_Nr(i); + cout << "Tier wurde angelegt: " << endl; + i++; + break; + } + + case 2 : { //Funktion um alle Tiere auszugeben + system("cls"); + for(int j = 0; j < i; j++) + tiere[j].TierAnzeigen(); + break; + } + + case 3 : { //Funktion um Tier zu verkaufen + system("cls"); + cout << "Tiernummer eingeben: " << endl; + cin >> nr; + bool tmp = false; + for(int j = 0; j < i; j++) + { + if(tiere[j].get_Nr() == nr && tiere[j].get_Bestand() == 1) + { + tiere[j].TierVerkaufen(); + tmp = true; + break; + } + else if (tiere[j].get_Nr() == nr && tiere[j].get_Bestand() == 0) + { + cout << "Tier mit der Nummer " << tiere[j].get_Nr() << " nicht im Bestand." << endl; + tmp = true; + break; + } + } + if(!tmp) //falls keine Tier gefunden wurde + cout << "Tier mit der Nummer " << nr << " nicht vorhanden." << endl; + + break; + } + + /* case 0 bricht Programm ab + da s gleich 1 gesetzt wird*/ + + case 0: + { + s = 1 ; + break; + } + + /* default + bei anderen Eingaben bleibt Menü erhalten*/ + + default: + { + s = 0 ; + } + } +system(" pause"); +}; +}; + diff --git a/VHB_Registration.mp4 b/VHB_Registration.mp4 new file mode 100644 index 0000000..1872d1f Binary files /dev/null and b/VHB_Registration.mp4 differ diff --git a/skript_cpp1_2019.pdf b/skript_cpp1_2019.pdf new file mode 100644 index 0000000..4cad1bc Binary files /dev/null and b/skript_cpp1_2019.pdf differ diff --git a/skript_cpp2_2019.pdf b/skript_cpp2_2019.pdf new file mode 100644 index 0000000..85959a4 Binary files /dev/null and b/skript_cpp2_2019.pdf differ