Hilfe!!!
-
Hallo, bin Newbie und muß bis heut Nacht folgende Aufgabe lösen mit Hilfe vom C++Builder 6! Wäre super, wenn einer Lust den Code zu posten! Danke im Vorraus!
In einer Autovermietung (AV) können Fahrzeuge (F) vom Typ PKW und LKW
ausgeliehen werden. Die pauschale Grundgebühr für ein Mietfahrzeug hängt vom
jeweiligen Fahrzeugtyp ab.
Die Methode leihgebuehr der Klasse AV ermittelt aus dem Typ des Fahrzeuges die
Leihgebühr:
float leihgebuehr(F* f) 25€ bei PKW und 40€ bei LKW.Jedes Fahrzeug (F) besitzt einen Markenname (Variablenname ist marke) und
einen Verweiß (Variablenname ist zentrale), implementiert als Zeiger, auf die
Autovermietung zur Bestimmung der Leihgebühr.
Beide Attribute werden im Konstruktor der Klasse übergeben. Alle Fahrzeuge
sollen zusätzlich die Methode mietpreis bereitstellen, welche für die
gefahrenen Kilometer die Leihgebühr des jeweiligen Fahrzeuges berechnet und
als Rückgabe liefert.
Die Methode modell soll den Markennamen liefern.Ein PKW ist ein Fahrzeug, dessen Mietpreis sich wie folgt berechnet.
Leihgebühr von PKW + gefahrene_Km * 0.15€
Ein LKW ist ein Fahrzeug, das zusätzlich über eine Nutzlast (Variablenname
ist nutzlast) verfügt. Die Nutzlast wird im Konstruktor übergeben.
Die Methode nl liefert die Nutzlast eines LKW.
Der Mietpreis für einen LKW berechnet sich wie folgt:Leihgebühr von LKW + Nutzlast * gefahrene_Km * 0.25€
Die Autovermietung AV stellt zusätzlich zur Methode float leihgebuer(F* f)
folgende Funktionalität bereit:
-Hinzufügen eines neuen Fahrzeuges über die Methode neuesFahrzeug;
-Ermitteln des durchschnittlichen Mietpreises dMp aller Fahrzeuge bei einer
Fahrtstrecke von 50 Kilometern.
-Ermitteln der maximalen Nutzlast maxNl, die ein LKW des Fuhrparks
befördern kann.3.1 Deklarieren Sie obiges System durch Klassen in C++ in der
Datei <interface.h>.
Verwenden Sie ausschließlich die angegebenen Klassen-, Methoden- und
Variablennamen und fügen Sie außer den Konstruktoren keine weiteren
Elemente hinzu. Das Zugriffsrecht der Attribute darf nicht public sein!Die Signatur der Methode float leihgebuehr(F* f) ist vorgegeben!
Die Klasse F ist als abstrakte Klasse zu realisieren.
Verwenden Sie einen STL-Vector als Container für alle Fahrzeuge einer
Autovermietung!
3.2 Implementieren Sie die Klassen in der Datei <impl.cpp>.
3.3 Implementieren Sie einen Testrahmen <main.cpp> der folgende Aufgaben löst:
3.3.1 Erzeugen einer Zentrale; Erzeugen folgender Fahrzeuge;
PKW mit der Markenbezeichnung: Volvo S70
PKW mit der Markenbezeichnung: Opel Astra
LKW mit der Markenbezeichnung: Volvo F12 und 50t Nutzlast
LKW mit der Markenbezeichnung: Mercedes Atego und 11t Nutzlast
Hinzufügen der Fahrzeuge zur Zentrale.3.3.2 Ermitteln und ausgeben:
a) des durchschnittlichen Mietpreises aller Fahrzeuge bei 50km Fahrstrecke
b) der maximalen Nutzlast eines LKW des Fuhrparks
c) der Leihgebühr (nicht Mietpreis) für das Mieten von PKW1
-
Im normallfall wird hier recht sellten eine (Haus) Aufgabe für jemanden erledigt.
Versuch es so weit du kannst selbst und es wir dir schnell und gut geholfen.-Wie weit bist du selber gekommen?
-Wo hackt es denn?MfG Max
-
Wir machen hier nicht _deine_ Hausaufgaben!
-
Hallo, bin Newbie und muß bis heut Nacht folgende Aufgabe lösen mit Hilfe vom C++Builder 6! Wäre super, wenn einer Lust den Code zu posten! Danke im v******!
Wo bekommt ihr immer solche Aufgaben her? Und vielleicht solltest du auch mal an deiner Zeiteinteilung arbeiten, du wirst die Aufgaben ja wahrscheinlich nicht erst heute bekommen haben.
-
@Flashbang:
man kann hier wirklich untersteichen und muss das nicht über _dämliche Unterstriche_ simulieren.@coal16: Wo ist dein bisheriger Code?
-
@CarstenJ: ...nein, natürlich hab ich die Aufgabe nicht erst heute bekommen, sondern vor 2-3 Monaten, aber morgen muss ich es halt abgeben!
@all: sorry für die Belästigung, aber einen Versuch wars wert...kann ja auch wirklich keiner Verlangen so nen krassen Code innerhalb kürzester Zeit auf die Reihe zu bekommen!
-
tja, schade das du nicht schon welchen hast / zeigst, dann würden dir sicher einige helfen.
-
nein, natürlich hab ich die Aufgabe nicht erst heute bekommen, sondern vor 2-3 Monaten, aber morgen muss ich es halt abgeben!
Grübel...warum fragst du denn dann erst jetzt? Wenn du vor 2 Wochen gefragt hättest, hätten wir dir mit Sicherheit helfen können. Hast du denn selber mal irgendwas in den 2 Monaten versucht?
-
Ich finde die Übung ganz interessant, wo gibt es denn mehr davon?
Auf jeden Fall habe ich mich daran versucht und brauche nun eure Hilfe. Bis jetzt habe ich nur wenig Methode fertig implemtiert, allerdings macht mir die Vererbung zu schaffen und ab und an finde ich die Aufgabe unklar, also bräuchte ich euren Rat:#include <iostream> #include <string> #include <stdlib.h> using namespace std; // Vorwärtsdeklaration class CFahrzeuge; /* class CPKW : public CFahrzeug ///////////////////////////////*/ class CAutovermietung { public: float leihgebuehr(CFahrzeuge* fahrzeug); void neues_fahrzeug(); // Fahrzeug erschaffen und der Autovermietung zuweisen void dmp() const; // Durschnittlicher Mietpreis aller Fahrzeuge b.einer Fahrstrecke von 50KM void maxNl() const; // Liefert die maximale Nutzlast eines LKW ??! }; float CAutovermietung::leihgebuehr(CFahrzeuge* fahrzeug) { // 25EUR bei PKW und 40EUR bei LKW. return(0); } /* class CPKW : public CFahrzeug //////////////////////////////*/ class CFahrzeuge { public: CFahrzeuge(string, CAutovermietung*); float mietpreis(); string modell() const; protected: string m_markenname; unsigned int m_gefahreneKm; CAutovermietung *m_ptrzentrale; }; CFahrzeuge::CFahrzeuge(string markenname, CAutovermietung* zentrale) { } string CFahrzeuge::modell() const { return m_markenname; } /* class CPKW : public CFahrzeug //////////////////////////////*/ class CPKW : public CFahrzeuge { public: float mietpreis(); // 25 Euro Leihgebühr+gefahrene_Km*0.15 }; /* class CPKW : public CFahrzeug ///////////////////////////////*/ class CLKW : public CFahrzeuge { public: CLKW(unsigned int); unsigned int nl() const; float mietpreis(); // 40 Euro Leihgebühr+gefahrene_Km*0.25 private: unsigned int m_nutzlast; }; CLKW::CLKW(unsigned int nutzlast) { m_nutzlast = nutzlast; } unsigned int CLKW::nl() const { return(m_nutzlast); } int main(int argc, char *argv[]) { return(0); }
Compilerfehler:
**
main.cpp:87: base `CFahrzeuge' with only non-default constructor
main.cpp:87: in class without a constructor
**und
**
main.cpp:101: no matching function for call to `CFahrzeuge::CFahrzeuge ()'
main.cpp:68: candidates are: CFahrzeuge::CFahrzeuge(basic_string,__default_alloc_template >, CAutovermietung
main.cpp:65: CFahrzeuge::CFahrzeuge(const CFahrzeuge &)
**Ich muss dazu sagen das ist das erste mal das ich etwas mit Vererbung progammieren, ich hab deshalb auch noch eine Designfrage:
In der Aufgabe steht alle Fahrzeuge sollen die Methode Mietpreis() haben, allerdings berechnet sich diese bei PKW und LKW anders, also müsste ich sie in den Klassen CPKW und CLKW ja eh wieder überschreiben, wieso soll ich sie dann erst in CFahrzeuge deklarieren?
Was würdet ihr noch anders machen?
Gruß
CentreCom
-
Tja, coal16 wirds wohl nix mehr helfen.
Deine Fehler resultieren daraus, dass du keinen Standard ctor hast. Den generiert der Compiler eigentlich selbst. Allerdings nur, solang du überhaupt keine ctor Funktionen hast. Da dies bei CFahrzeuge nicht der Fall ist, brauchst sowas:
CFahrzeuge::CFahrzeuge() { }
Ich hab zwar die Aufgabenstellung nicht gelesen, aber bei schnellem Überfliegen deines Codes, solltest du dich mal mit dem Schlüsselwort virtual auseinanderstzen.
btw:
Ich bin zwar niemand der über den Coding Style anderer lästert. Da sollte jeder seinen eigenen Weg finden, solang es keine Vorschriften gibt. Aber deinen Stil solltest du in einigen Punkten nochmal überdenken.