diff --git a/Aufgabeblock_1/.cproject b/Aufgabeblock_1/.cproject
deleted file mode 100644
index f8356ef..0000000
--- a/Aufgabeblock_1/.cproject
+++ /dev/null
@@ -1,1758 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Aufgabeblock_1/.settings/de.innot.avreclipse.core.prefs b/Aufgabeblock_1/.settings/de.innot.avreclipse.core.prefs
deleted file mode 100644
index 107b324..0000000
--- a/Aufgabeblock_1/.settings/de.innot.avreclipse.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Thu Aug 18 14:08:19 CEST 2011
-avrtarget/perConfig=false
-eclipse.preferences.version=1
diff --git a/Aufgabeblock_1/Fahrrad.cpp b/Aufgabeblock_1/Fahrrad.cpp
deleted file mode 100644
index 0752f52..0000000
--- a/Aufgabeblock_1/Fahrrad.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Fahrrad.cpp
- *
- * Created on: 18.08.2011
- * Author: stv0g
- */
-
-#include "Fahrrad.h"
-
-Fahrrad::Fahrrad() {
- // TODO Auto-generated constructor stub
-}
-
-Fahrrad::~Fahrrad() {
- // TODO Auto-generated destructor stub
-}
-
-double Fahrrad::dGeschwindigkeit() {
- double dFahrradGeschwindigkeit = p_dMaxGeschwindigkeit;
- int iReduzierung = (int) p_dGesamtStrecke / 20;
-
- for (int i = 0; i < iReduzierung; i++) {
- dFahrradGeschwindigkeit *= 0.9;
- }
-
- if (dFahrradGeschwindigkeit < 12) {
- dFahrradGeschwindigkeit = 12;
- }
-
- return dFahrradGeschwindigkeit;
-}
-
-static Fahrrad * Fahrrad::erzeuge(string sName, double dMaxGeschwindigkeit) {
- Fahrrad *rad = new Fahrrad(sName);
-
- rad->p_dMaxGeschwindigkeit = dMaxGeschwindigkeit;
-
- return rad;
-}
-
diff --git a/Aufgabeblock_1/Fahrrad.h b/Aufgabeblock_1/Fahrrad.h
deleted file mode 100644
index a2beba1..0000000
--- a/Aufgabeblock_1/Fahrrad.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Fahrrad.h
- *
- * Created on: 18.08.2011
- * Author: stv0g
- */
-
-#ifndef FAHRRAD_H_
-#define FAHRRAD_H_
-
-#include "Fahrzeug.h"
-
-using namespace std;
-
-class Fahrrad: public Fahrzeug {
-public:
- Fahrrad();
- virtual ~Fahrrad();
-
- double dGeschwindigkeit();
- void vAusgabe();
-
- static Fahrrad * erzeuge(string sName, double dMaxGeschwindigkeit);
-};
-
-#endif /* FAHRRAD_H_ */
diff --git a/Aufgabeblock_1/Fahrzeug.cpp b/Aufgabeblock_1/Fahrzeug.cpp
deleted file mode 100644
index 0c4157b..0000000
--- a/Aufgabeblock_1/Fahrzeug.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Fahrzeug.cpp
- *
- * Created on: 18.08.2011
- * Author: stv0g
- */
-
-#include
-#include
-#include
-
-#include "Fahrzeug.h"
-
-extern double dGlobaleZeit;
-
-int Fahrzeug::p_iMaxID = 0;
-
-Fahrzeug::Fahrzeug() {
- vInitialisierung();
- //cout << this->p_sName << ":" << this->p_iID << " wurde initialisiert" << endl;
-}
-
-Fahrzeug::Fahrzeug(string sName) {
- vInitialisierung();
- p_sName = sName;
-
- //cout << this->p_sName << ":" << this->p_iID << " wurde initialisiert" << endl;
-}
-
-Fahrzeug::~Fahrzeug() {
- //cout << this->p_sName << ":" << this->p_iID << " wurde gelöscht" << endl;
-}
-
-void Fahrzeug::vInitialisierung() {
- p_iID = ++p_iMaxID;
-
- p_sName = " ";
- p_dMaxGeschwindigkeit = 0;
- p_dGesamtStrecke = 0;
- p_dGesamtZeit = 0;
- p_dZeit = 0;
-}
-
-void Fahrzeug::vAusgabe() {
- cout << setprecision(2) << setiosflags(ios::fixed)
- << resetiosflags(ios::right) << setiosflags(ios::left)
- << setw(4) << this->p_iID
- << setw(7) << this->p_sName << ": "
- << resetiosflags(ios::left) << setiosflags(ios::right)
- << setw(7) << p_dMaxGeschwindigkeit
- << setw(12) << p_dGesamtStrecke
- << endl;
-}
-
-void Fahrzeug::vAbfertigung() {
- if (fabs(p_dZeit - dGlobaleZeit) < 1e-10) return;
-
- double dDelta = dGlobaleZeit - p_dZeit;
-
- p_dGesamtZeit += dDelta;
- p_dGesamtStrecke += dGeschwindigkeit() * dDelta;
- p_dZeit = dGlobaleZeit;
-}
diff --git a/Aufgabeblock_1/PKW.cpp b/Aufgabeblock_1/PKW.cpp
deleted file mode 100644
index 572c16e..0000000
--- a/Aufgabeblock_1/PKW.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * PKW.cpp
- *
- * Created on: 18.08.2011
- * Author: stv0g
- */
-
-#include
-#include
-
-#include "PKW.h"
-
-using namespace std;
-
-extern double dGlobaleZeit;
-
-PKW::PKW(string sName, double dVerbrauch, double dTankvolumen = 55) :
- Fahrzeug(sName),
- p_dVerbrauch(dVerbrauch),
- p_dTankvolumen(dTankvolumen),
- p_dTankinhalt(dTankvolumen/2) { }
-
-PKW::PKW(double dVerbrauch, double dTankvolumen = 55) :
- Fahrzeug(),
- p_dVerbrauch(dVerbrauch),
- p_dTankvolumen(dTankvolumen),
- p_dTankinhalt(dTankvolumen/2) { }
-
-PKW::~PKW() {
- // TODO Auto-generated destructor stub
-}
-
-double PKW::dTanken(double dMenge = 0) {
- double dAlterInhalt = p_dTankinhalt;
-
- if (dMenge == 0) {
- p_dTankinhalt = p_dTankvolumen;
- }
- else {
- p_dTankinhalt += dMenge;
- if (p_dTankinhalt > p_dTankvolumen) {
- p_dTankinhalt = p_dTankvolumen; /* Verhindere Überfüllung */
- }
- }
-
- return p_dTankinhalt - dAlterInhalt;
-}
-
-void PKW::vAbfertigung() {
- if (p_dTankinhalt > 0) { /* prüfen, ob etwas im Tank ist */
- p_dTankinhalt -= (dGlobaleZeit - p_dZeit) * p_dMaxGeschwindigkeit * p_dVerbrauch / 100;
- if (p_dTankinhalt < 0) { /* falls Tankinhalt negativ ist */
- p_dTankinhalt = 0;
- }
- Fahrzeug::vAbfertigung();
- }
- else {
- p_dTankinhalt = 0;
- }
-}
-
-void PKW::vAusgabe() {
- Fahrzeug::vAusgabe();
-
- cout << setprecision(2) << setiosflags(ios::fixed)
- << resetiosflags(ios::left) << setiosflags(ios::right)
- << setw(7) << dVerbrauch()
- << setw(7) << p_dTankinhalt << endl;
-}
-
-double PKW::dVerbrauch() {
- return p_dGesamtStrecke * p_dVerbrauch / 100;
-}
-
-static PKW * PKW::erzeuge(string sName, double dMaxGeschwindigkeit) {
- Fahrrad *rad = new Fahrrad(sName);
-
- rad->p_dMaxGeschwindigkeit = dMaxGeschwindigkeit;
-
- return rad;
-}
diff --git a/Aufgabeblock_1/main.cpp b/Aufgabeblock_1/main.cpp
deleted file mode 100644
index a118d65..0000000
--- a/Aufgabeblock_1/main.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * main.cpp
- *
- * Created on: 18.08.2011
- * Author: stv0g
- */
-
-#include
-#include
-
-#include "Fahrzeug.h"
-
-using namespace std;
-
-double dGlobaleZeit = 0.0;
-
-void vAufgabe1() {
- /* 3. Initialisieren */
- Fahrzeug fz1("Porsche");
- Fahrzeug *fz2 = new Fahrzeug();
-
- string name;
- cout << "Bitte geben Sie einen Fahrzeugnamen ein: ";
- cin >> name;
-
- Fahrzeug *fz3 = new Fahrzeug(name);
-
- /* 5. Ausgabe */
- cout << endl << "ID Name : MaxKmh GesamtStrecke" << endl;
- cout << "++++++++++++++++++++++++++++++++++++++++++" << endl;
- fz1.vAusgabe();
- fz2->vAusgabe();
- fz3->vAusgabe();
-
- /* 9. Abfertigung */
- double dAbfertigungsIntervall;
- cout << endl << "Bitte geben Sie ein Abfertigungsintervall ein: ";
- cin >> dAbfertigungsIntervall;
-
- cout << endl << "ID Name : MaxKmh GesamtStrecke" << endl;
- cout << "++++++++++++++++++++++++++++++++++++++++++" << endl;
- for (; dGlobaleZeit < 24; dGlobaleZeit += dAbfertigungsIntervall) { /* simuliere für einen Tag */
- fz1.vAbfertigung();
- fz2->vAbfertigung();
- fz3->vAbfertigung();
-
- cout << "globale Zeit: " << dGlobaleZeit << endl;
- fz1.vAusgabe();
- fz2->vAusgabe();
- fz3->vAusgabe();
- }
-
- delete fz2;
- delete fz3;
-}
-
-void vAufgabe1_deb() {
- Fahrzeug fz1("Opel");
- Fahrzeug fz2("Benz");
- Fahrzeug fz3("Ferrari");
- Fahrzeug fz4("Mini");
-
- Fahrzeug *feld_name[4] = {&fz1, &fz2, &fz3, &fz4};
-
- feld_name[2] = 0;
-
- for (int i = 0; i < 4; i++) {
- feld_name[i]->vAusgabe();
- }
-}
-
-void vAufgabe2() {
- int iAnzahl;
- vector fahrzeuge;
-
- cout << "Wie viele Fahrzeuge möchten Sie erstellen? ";
- cin >> iAnzahl;
-
- for (int j = 0; j < i; j++) {
- fahrzeuge.push(Fahrrad::erzeuge());
- }
-}
-
-int main() {
- //vAufgabe1();
- //vAufgabe1_deb();
- vAugabe2();
-
- return 0;
-}
diff --git a/Aufgabenblock_1/.cproject b/Aufgabenblock_1/.cproject
new file mode 100644
index 0000000..fdc8715
--- /dev/null
+++ b/Aufgabenblock_1/.cproject
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Aufgabeblock_1/.project b/Aufgabenblock_1/.project
similarity index 92%
rename from Aufgabeblock_1/.project
rename to Aufgabenblock_1/.project
index 8a85022..aca6731 100644
--- a/Aufgabeblock_1/.project
+++ b/Aufgabenblock_1/.project
@@ -1,6 +1,6 @@
- Aufgabeblock_1
+ Aufgabenblock_1
@@ -31,7 +31,7 @@
org.eclipse.cdt.make.core.buildLocation
- ${workspace_loc:/Aufgabeblock_1/Debug}
+ ${workspace_loc:/Aufgabenblock_1/Debug}
org.eclipse.cdt.make.core.cleanBuildTarget
@@ -69,7 +69,6 @@
org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
@@ -79,6 +78,5 @@
org.eclipse.cdt.core.ccnature
org.eclipse.cdt.managedbuilder.core.managedBuildNature
org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
- de.innot.avreclipse.core.avrnature
diff --git a/Aufgabenblock_1/Fahrrad.cpp b/Aufgabenblock_1/Fahrrad.cpp
new file mode 100644
index 0000000..bffc89c
--- /dev/null
+++ b/Aufgabenblock_1/Fahrrad.cpp
@@ -0,0 +1,22 @@
+#include
+
+#include "Fahrrad.h"
+
+Fahrrad::Fahrrad(string sName, double dMaxGeschwindigkeit) :
+ Fahrzeug(sName, dMaxGeschwindigkeit) { }
+
+Fahrrad::~Fahrrad() { }
+
+double Fahrrad::dGeschwindigkeit() const {
+ double dGeschwindigkeit;
+ int iReduzierung = p_dGesamtStrecke / 20;
+
+ dGeschwindigkeit = p_dMaxGeschwindigkeit * powl(0.9, iReduzierung);
+
+ if (dGeschwindigkeit < 12) {
+ dGeschwindigkeit = 12;
+ }
+
+ return dGeschwindigkeit;
+}
+
diff --git a/Aufgabenblock_1/Fahrrad.h b/Aufgabenblock_1/Fahrrad.h
new file mode 100644
index 0000000..769c9a5
--- /dev/null
+++ b/Aufgabenblock_1/Fahrrad.h
@@ -0,0 +1,16 @@
+#ifndef FAHRRAD_H_
+#define FAHRRAD_H_
+
+#include "Fahrzeug.h"
+
+using namespace std;
+
+class Fahrrad: public Fahrzeug {
+public:
+ Fahrrad(string sName, double dMaxGeschwindigkeit);
+ virtual ~Fahrrad();
+
+ double dGeschwindigkeit() const;
+};
+
+#endif /* FAHRRAD_H_ */
diff --git a/Aufgabenblock_1/Fahrzeug.cpp b/Aufgabenblock_1/Fahrzeug.cpp
new file mode 100644
index 0000000..17fcf5b
--- /dev/null
+++ b/Aufgabenblock_1/Fahrzeug.cpp
@@ -0,0 +1,98 @@
+#include
+#include
+#include
+
+#include "Fahrzeug.h"
+
+extern double dGlobaleZeit;
+
+int Fahrzeug::p_iMaxID = 0;
+
+Fahrzeug::Fahrzeug() {
+ vInitialisierung();
+ //cout << this->p_sName << ":" << this->p_iID << " wurde initialisiert" << endl;
+}
+
+Fahrzeug::Fahrzeug(Fahrzeug &fz) {
+ vInitialisierung();
+
+ p_sName = fz.p_sName;
+ p_dMaxGeschwindigkeit = fz.p_dMaxGeschwindigkeit;
+
+ /* p_dGesamtStrecke, p_dGesamtZeit, p_dZeit werden auf 0 gesetzt */
+}
+
+Fahrzeug::Fahrzeug(string sName) {
+ vInitialisierung();
+
+ p_sName = sName;
+ //cout << this->p_sName << ":" << this->p_iID << " wurde initialisiert" << endl;
+}
+
+Fahrzeug::Fahrzeug(string sName, double dMaxGeschwindkeit) {
+ vInitialisierung();
+
+ p_sName = sName;
+ p_dMaxGeschwindigkeit = dMaxGeschwindkeit;
+}
+
+Fahrzeug::~Fahrzeug() {
+ //cout << this->p_sName << ":" << this->p_iID << " wurde gelöscht" << endl;
+}
+
+void Fahrzeug::vInitialisierung() {
+ p_iID = ++p_iMaxID;
+
+ p_sName = " ";
+ p_dMaxGeschwindigkeit = 0;
+ p_dGesamtStrecke = 0;
+ p_dGesamtZeit = 0;
+ p_dZeit = 0;
+}
+
+void Fahrzeug::vAusgabeHeader() {
+ cout << "ID Name : MaxKmh GesamtStrecke Verbrauch Tankinhalt" << endl;
+ cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
+}
+
+void Fahrzeug::vAusgabe() const {
+ cout << endl
+ << setprecision(2) << setiosflags(ios::fixed)
+ << resetiosflags(ios::right) << setiosflags(ios::left)
+ << setw(4) << p_iID
+ << setw(7) << p_sName << ":"
+ << resetiosflags(ios::left) << setiosflags(ios::right)
+ << setw(8) << dGeschwindigkeit()
+ << setw(16) << p_dGesamtStrecke;
+}
+
+ostream& Fahrzeug::ostreamAusgabe(ostream &stream) const {
+ stream << setprecision(2) << setiosflags(ios::fixed)
+ << resetiosflags(ios::right) << setiosflags(ios::left)
+ << setw(4) << p_iID
+ << setw(7) << p_sName << ":"
+ << resetiosflags(ios::left) << setiosflags(ios::right)
+ << setw(8) << dGeschwindigkeit()
+ << setw(16) << p_dGesamtStrecke;
+
+ return stream;
+}
+
+void Fahrzeug::vAbfertigung() {
+ /* nicht doppelt abfertigen */
+ if (fabs(p_dZeit - dGlobaleZeit) < 1e-10) return;
+
+ double dDelta = dGlobaleZeit - p_dZeit;
+
+ p_dGesamtZeit += dDelta;
+ p_dGesamtStrecke += dGeschwindigkeit() * dDelta;
+ p_dZeit = dGlobaleZeit;
+}
+
+bool Fahrzeug::operator<(Fahrzeug fz) {
+ return (p_dGesamtStrecke < fz.p_dGesamtStrecke);
+}
+
+ostream& operator<<(ostream &stream, const Fahrzeug fz) {
+ return fz.ostreamAusgabe(stream);
+}
diff --git a/Aufgabeblock_1/Fahrzeug.h b/Aufgabenblock_1/Fahrzeug.h
similarity index 54%
rename from Aufgabeblock_1/Fahrzeug.h
rename to Aufgabenblock_1/Fahrzeug.h
index 440bc8b..472447a 100644
--- a/Aufgabeblock_1/Fahrzeug.h
+++ b/Aufgabenblock_1/Fahrzeug.h
@@ -15,13 +15,22 @@ using namespace std;
class Fahrzeug {
public:
Fahrzeug();
+ Fahrzeug(Fahrzeug &fz);
Fahrzeug(string sName);
+ Fahrzeug(string sName, double dMaxGeschwindkeit);
+
virtual ~Fahrzeug();
- void vAusgabe();
+ virtual void vAusgabe() const;
+ virtual ostream& ostreamAusgabe(ostream &stream) const;
+
virtual void vAbfertigung();
- virtual double dTanken(double dMenge) { return 0; }; /* Kraftfahrzeuge überladen dTanken() */
- virtual double dGeschwindigkeit() { return p_dMaxGeschwindigkeit; }
+ virtual double dTanken(double dMenge = 0.0) { return 0; };
+ virtual double dGeschwindigkeit() const { return p_dMaxGeschwindigkeit; }
+
+ bool operator<(Fahrzeug fz);
+
+ static void vAusgabeHeader();
protected:
int p_iID;
@@ -37,4 +46,6 @@ private:
void vInitialisierung();
};
+ostream& operator<<(ostream &out, const Fahrzeug fz);
+
#endif /* FAHRZEUG_H_ */
diff --git a/Aufgabenblock_1/PKW.cpp b/Aufgabenblock_1/PKW.cpp
new file mode 100644
index 0000000..e0b80bc
--- /dev/null
+++ b/Aufgabenblock_1/PKW.cpp
@@ -0,0 +1,69 @@
+#include
+#include
+
+#include "PKW.h"
+
+using namespace std;
+
+extern double dGlobaleZeit;
+
+PKW::PKW(string sName, double dMaxGeschwindigkeit) :
+ Fahrzeug(sName, dMaxGeschwindigkeit) { };
+
+PKW::PKW(string sName, double dMaxGeschwindigkeit, double dVerbrauch, double dTankvolumen) :
+ Fahrzeug(sName, dMaxGeschwindigkeit),
+ p_dVerbrauch(dVerbrauch),
+ p_dTankinhalt(dTankvolumen/2),
+ p_dTankvolumen(dTankvolumen) { };
+
+PKW::~PKW() { }
+
+double PKW::dTanken(double dMenge) {
+ double dAlterInhalt = p_dTankinhalt;
+
+ if (dMenge == 0) {
+ p_dTankinhalt = p_dTankvolumen;
+ }
+ else {
+ p_dTankinhalt += dMenge;
+ if (p_dTankinhalt > p_dTankvolumen) {
+ p_dTankinhalt = p_dTankvolumen; /* Verhindere Überfüllung */
+ }
+ }
+
+ return p_dTankinhalt - dAlterInhalt;
+}
+
+void PKW::vAbfertigung() {
+ if (p_dTankinhalt > 0) { /* prüfen, ob etwas im Tank ist */
+ p_dTankinhalt -= (dGlobaleZeit - p_dZeit) * p_dMaxGeschwindigkeit * p_dVerbrauch / 100;
+
+ if (p_dTankinhalt < 0) { /* falls Tankinhalt negativ ist */
+ p_dTankinhalt = 0;
+ }
+
+ Fahrzeug::vAbfertigung();
+ }
+}
+
+void PKW::vAusgabe() const {
+ Fahrzeug::vAusgabe();
+
+ cout << setprecision(2) << setiosflags(ios::fixed)
+ << resetiosflags(ios::left) << setiosflags(ios::right)
+ << setw(12) << dVerbrauch()
+ << setw(13) << p_dTankinhalt;
+}
+
+ostream& PKW::ostreamAusgabe(ostream &stream) const {
+ Fahrzeug::ostreamAusgabe(stream) << setprecision(2) << setiosflags(ios::fixed)
+ << resetiosflags(ios::left) << setiosflags(ios::right)
+ << setw(12) << dVerbrauch()
+ << setw(13) << p_dTankinhalt;
+
+ return stream;
+}
+
+double PKW::dVerbrauch() const {
+ return p_dGesamtStrecke * p_dVerbrauch / 100;
+}
diff --git a/Aufgabeblock_1/PKW.h b/Aufgabenblock_1/PKW.h
similarity index 55%
rename from Aufgabeblock_1/PKW.h
rename to Aufgabenblock_1/PKW.h
index c624a3e..9183135 100644
--- a/Aufgabeblock_1/PKW.h
+++ b/Aufgabenblock_1/PKW.h
@@ -15,20 +15,21 @@
using namespace std;
class PKW: public Fahrzeug {
+public:
+ PKW(string sName, double dMaxGeschwindigkeit);
+ PKW(string sName, double dMaxGeschwindigkeit, double dVerbrauch, double dTankvolumen = 55);
+ virtual ~PKW();
+
+ void vAbfertigung();
+ void vAusgabe() const;
+ ostream& ostreamAusgabe(ostream &stream) const;
+ double dVerbrauch() const;
+ double dTanken(double dMenge = 0.0);
+
private:
double p_dVerbrauch;
double p_dTankinhalt;
double p_dTankvolumen;
-
-public:
- PKW(string sName, double dTankvolumen);
- PKW(double dTankvolumen);
- virtual ~PKW();
-
- void vAbfertigung();
- void vAusgabe();
- double dVerbrauch();
- double dTanken(double dMenge);
};
#endif /* PKW_H_ */
diff --git a/Aufgabenblock_1/main.cpp b/Aufgabenblock_1/main.cpp
new file mode 100644
index 0000000..5f1bb1e
--- /dev/null
+++ b/Aufgabenblock_1/main.cpp
@@ -0,0 +1,163 @@
+#include
+#include
+#include
+
+#include "Fahrzeug.h"
+#include "Fahrrad.h"
+#include "PKW.h"
+
+using namespace std;
+
+double dGlobaleZeit = 0.0;
+
+void vAufgabe1() {
+ /* 3. Initialisieren */
+ Fahrzeug fz1("Porsche");
+ Fahrzeug *fz2 = new Fahrzeug();
+
+ string name;
+ cout << "Bitte geben Sie einen Fahrzeugnamen ein: ";
+ cin >> name;
+
+ Fahrzeug *fz3 = new Fahrzeug(name, 22.5);
+
+ Fahrzeug::vAusgabeHeader();
+ fz1.vAusgabe();
+ fz2->vAusgabe();
+ fz3->vAusgabe();
+
+ /* 9. Abfertigung */
+ double dAbfertigungsIntervall;
+ cout << endl << "Bitte geben Sie ein Abfertigungsintervall ein: ";
+ cin >> dAbfertigungsIntervall;
+
+ Fahrzeug::vAusgabeHeader();
+ for ( ; dGlobaleZeit < 24; dGlobaleZeit += dAbfertigungsIntervall) { /* simuliere für einen Tag */
+ fz1.vAbfertigung();
+ fz2->vAbfertigung();
+ fz3->vAbfertigung();
+
+ cout << endl << "globale Zeit: " << dGlobaleZeit;
+ fz1.vAusgabe();
+ fz2->vAusgabe();
+ fz3->vAusgabe();
+ }
+
+ delete fz2;
+ delete fz3;
+}
+
+/**
+ * Testing debugger
+ */
+void vAufgabe1_deb() {
+ Fahrzeug fz1("Opel");
+ Fahrzeug fz2("Benz");
+ Fahrzeug fz3("Ferrari");
+ Fahrzeug fz4("Mini");
+
+ Fahrzeug *feld_name[4] = {&fz1, &fz2, &fz3, &fz4};
+
+ feld_name[2] = 0; // NULL pointer => Segmention Fault
+
+ for (int i = 0; i < 4; i++) {
+ feld_name[i]->vAusgabe();
+ }
+}
+
+void vAufgabe2() {
+ int iPKWs, iFahrraeder;
+ vector fahrzeuge;
+
+ /* Erzeugen */
+
+ cout << "Wie viele PKWs möchten Sie erstellen? ";
+ cin >> iPKWs;
+
+ cout << "Wie viele Fahrräder möchten Sie erstellen? ";
+ cin >> iFahrraeder;
+
+ for (int i = 0; i < iPKWs + iFahrraeder; i++) {
+ Fahrzeug *fahrzeug;
+ string sName;
+ double dMaxGeschwindkeit;
+
+ cout << "Bitte geben Sie den Namen des Fahrzeugs Nr. " << i+1 << " an: ";
+ cin >> sName;
+ cout << "Bitte geben Sie die maximale Geschwindkeit des Fahrzeugs Nr. " << i+1 << " an: ";
+ cin >> dMaxGeschwindkeit;
+
+ if (i < iPKWs) { /* erzeuge PKW */
+ double dVerbrauch;
+ cout << "Bitte geben Sie den Verbrauch des PKWs Nr. " << i+1 << " an: ";
+ cin >> dVerbrauch;
+
+ fahrzeug = new PKW(sName, dMaxGeschwindkeit, dVerbrauch);
+ }
+ else { /* erzeuge Fahrrad */
+ fahrzeug = new Fahrrad(sName, dMaxGeschwindkeit);
+ }
+
+ fahrzeuge.push_back(fahrzeug);
+ }
+
+ /* Abfertigen */
+
+ double dAbfertigungsIntervall;
+ size_t iNachgetankt = 0;
+ cout << "Bitte geben Sie ein Abfertigungsintervall ein: ";
+ cin >> dAbfertigungsIntervall;
+ cout << endl;
+
+ Fahrzeug::vAusgabeHeader();
+
+ for ( ; dGlobaleZeit < 6; dGlobaleZeit += dAbfertigungsIntervall) {
+ vector::iterator it;
+ for (it = fahrzeuge.begin(); it != fahrzeuge.end(); it++) {
+ if (dGlobaleZeit > 3 && iNachgetankt < fahrzeuge.size()) {
+ (*it)->dTanken();
+ iNachgetankt++;
+ }
+
+ (*it)->vAbfertigung();
+ (*it)->vAusgabe();
+ }
+ }
+}
+
+void vAufgabe3() {
+ PKW vw("Golf", 200, 6.7, 88);
+ Fahrrad velo("Haibike", 22);
+ Fahrzeug sch("Schiff", 22);
+
+ PKW::vAusgabeHeader();
+
+ cout << vw << endl << velo << endl << sch;
+}
+
+int main() {
+ int iWahl;
+
+ retry:
+
+ cout << "1: vAufgabe1()" << endl;
+ cout << "2: vAufgabe1_deb()" << endl;
+ cout << "3: vAufgabe2()" << endl;
+ cout << "4: vAufgabe3()" << endl;
+ cout << "Bitte wähen Sie eine Aufgabe: ";
+ cin >> iWahl;
+ cout << endl;
+
+ switch (iWahl) {
+ case 1: vAufgabe1(); break;
+ case 2: vAufgabe1_deb(); break;
+ case 3: vAufgabe2(); break;
+ case 4: vAufgabe3(); break;
+ default:
+ cerr << "Ungültige Eingabe! Bitte versuchen Sie es erneut" << endl;
+ goto retry;
+ }
+
+ cout << endl;
+ return 0;
+}