finished Aufgabenblock_1 (mostly)

This commit is contained in:
Steffen Vogel 2011-10-14 19:24:57 +02:00
parent 49bdf31c18
commit 1b3ae9e39b
16 changed files with 640 additions and 2078 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,3 +0,0 @@
#Thu Aug 18 14:08:19 CEST 2011
avrtarget/perConfig=false
eclipse.preferences.version=1

View file

@ -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;
}

View file

@ -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_ */

View file

@ -1,63 +0,0 @@
/*
* Fahrzeug.cpp
*
* Created on: 18.08.2011
* Author: stv0g
*/
#include <iostream>
#include <iomanip>
#include <cmath>
#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;
}

View file

@ -1,81 +0,0 @@
/*
* PKW.cpp
*
* Created on: 18.08.2011
* Author: stv0g
*/
#include <iostream>
#include <iomanip>
#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;
}

View file

@ -1,90 +0,0 @@
/*
* main.cpp
*
* Created on: 18.08.2011
* Author: stv0g
*/
#include <string>
#include <iostream>
#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<Fahrzeug *> 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;
}

245
Aufgabenblock_1/.cproject Normal file
View file

@ -0,0 +1,245 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.1856697356">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.1856697356" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="Aufgabenblock_1" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.1856697356" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.1856697356." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1037000934" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1917533961" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
<builder buildPath="${workspace_loc:/Aufgabenblock_1/Debug}" id="cdt.managedbuild.target.gnu.builder.exe.debug.1070152645" managedBuildOn="true" name="Gnu Make Builder.Debug" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.810203748" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.188657633" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.641087174" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
<option id="gnu.cpp.compiler.exe.debug.option.debugging.level.1631590812" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.417948505" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1085212480" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
<option id="gnu.c.compiler.exe.debug.option.debugging.level.653996215" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1337783831" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.554711489" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.2035335526" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.486201907">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.486201907" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="Aufgabenblock_1" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.486201907" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
<folderInfo id="cdt.managedbuild.config.gnu.exe.release.486201907." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.775759335" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1362512594" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
<builder buildPath="${workspace_loc:/Aufgabenblock_1/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.14119287" managedBuildOn="true" name="Gnu Make Builder.Release" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.717208988" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.430913885" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
<option id="gnu.cpp.compiler.exe.release.option.optimization.level.781694220" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option id="gnu.cpp.compiler.exe.release.option.debugging.level.1259227572" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.376885912" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.666602387" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
<option id="gnu.c.compiler.exe.release.option.debugging.level.570138469" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1435488110" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.1114858345" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.984070152" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release"/>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="Aufgabenblock_1.cdt.managedbuild.target.gnu.exe.1838894489" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
</storageModule>
</cproject>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Aufgabeblock_1</name>
<name>Aufgabenblock_1</name>
<comment></comment>
<projects>
</projects>
@ -31,7 +31,7 @@
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/Aufgabeblock_1/Debug}</value>
<value>${workspace_loc:/Aufgabenblock_1/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
@ -69,7 +69,6 @@
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
@ -79,6 +78,5 @@
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>de.innot.avreclipse.core.avrnature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,22 @@
#include <math.h>
#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;
}

16
Aufgabenblock_1/Fahrrad.h Normal file
View file

@ -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_ */

View file

@ -0,0 +1,98 @@
#include <iostream>
#include <iomanip>
#include <cmath>
#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);
}

View file

@ -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_ */

69
Aufgabenblock_1/PKW.cpp Normal file
View file

@ -0,0 +1,69 @@
#include <iostream>
#include <iomanip>
#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;
}

View file

@ -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_ */

163
Aufgabenblock_1/main.cpp Normal file
View file

@ -0,0 +1,163 @@
#include <string>
#include <vector>
#include <iostream>
#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<Fahrzeug *> 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<Fahrzeug *>::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;
}