Musterlösung zum vergleichen Gesucht
-
Hallo wir haben in der Uni eine Aufgabenstellung bekommen und würden uns freuen wenn wir hir im Forum mal eine Musterlösung dazu bekommen würden haben C++ seid 3 tagen und sind alle noch nicht so fit darin ich hoffe ihr könnt uns weiterhelfen
ich weis nicht wie man eine PDF datei hir anhängen kann deshalb Poste ich mal die Aufgabenstellung als Text hir rein ich bedanke mich schon mal im Namen des Semesters:1. Testaufgabe
Starten Sie mit einem leeren Win32 Konsolen Projekt Fuhrpark.
(1) Erstellen Sie eine Klasse CFahrzeug, die folgende Attribute besitzt:
string identNummer;
string kfzZeichen;
unsigned short baujahr;
e_fahrzeugArt typ;
bool overdrive;
e_fahrzeugArt ist ein Aufzählungstyp:
enum e_fahrzeugArt {unbekannt, pkw, lkw };
Deklarieren und Programmieren Sie einen Konstruktor
CFahrzeug(string identNummer, string kfzZeichen, unsigned short baujahr);
Achten Sie dabei darauf, dass Sie alle Attribute sinnvoll initialisieren! Dies gilt auch für einen
evtl. benötigten Default-Konstruktor!
Deklarieren und Programmieren Sie zusätzlich die Methoden
bool SetFahrzeugArt(e_fahrzeugArt arg);
bool SetOverdrive(bool arg);
Schließlich schreiben Sie eine Methode
bool Print();
mit deren Hilfe Sie die Attribute der Klasseninstanz formatiert auf dem Bildschirm ausgeben.
Verwenden Sie zur Ausgabe das Stream-Konzept von C++!
Orientieren Sie sich bei der Formatierung an folgendem Beispiel:
Ident-Nr: Wahl 001
Kfz-Zeichen: S-AP 1234
Art: PKW
Overdrive: nein(2) Erstellen Sie im gleichen Projekt eine Klasse CFurhpark mit einem Feld fahrzeugListe
von Zeigern des Typs CFahrzeug. Das Feld soll bis zu 10 solche Zeiger halten können. Dazu
ist eine Konstante cMaxArrayLength zu deklarieren. Verwenden Sie hier keine Präprozessor
Direktive!
Verwenden Sie den Konstruktor und den Destruktor zur manuellen Speicherverwaltung.
Kreieren Sie neue Instanzen der Klasse CFahrzeug mit new auf dem Heap! Bedenken Sie,
dass Sie jedes Heap-Stück mit delete wieder an das Betriebssystem zurück geben müssen.
Deklarieren und Programmieren Sie eine Methode
bool AddFahrzeug(CFahrzeug fahrzeug);
zum Hinzufügen neuer Instanzen von CFahrzeug zum Zeigerfeld.
Stellen Sie in der Methode sicher, dass die Grenzen des klasseninternen Feldes nicht
überschritten werden.
Deklarieren und Programmieren Sie schließlich eine Methode
bool Print();
in der Sie den Namen der Gruppe und alle Gruppenmitglieder auf dem Bildschirm formatiert
ausgeben.
Benutzen Sie die Funktion main() zum Testen Ihres Programms.
Halten Sie sich bei Ihrer Programmierung an das Prinzip maximaler Datenkapselung.
Geben Sie bitte nur unabhängige Dateien ab!
Achten Sie auf eine saubere Garbage Collection!
Hinweise:
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu
übergeben. Dazu muss ein Cast verwendet werden:
CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978);
(2) Beim Streaming kann die Klasse string nicht direkt ausgegeben werden, sondern muss in
einen ASCII String umgewandelt werden. Dazu existiert die Methode c_str():
cout << "Kfz-Zeichen: " << this->kfzZeichen.c_str() << endl;
-
Wie viel bezahlt ihr? Wenn ein ganzer Kurs zusammenlegt, kommt ja vielleicht sogar ein Betrag zusammen, bei dem es sich sogar lohnt, überhaupt in Betracht zu ziehen, für euch zu arbeiten. Ihr wollt schließlich jemanden mit akademischer Ausbildung ein paar Stunden für euch arbeiten lassen. Das kostet.
-
Bin für 350€ dabei.
MfG SideWinder
-
Bektas schrieb:
Achten Sie auf eine saubere Garbage Collection!
Hinweise:
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu
übergeben. Dazu muss ein Cast verwendet werden:
CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978);
(2) Beim Streaming kann die Klasse string nicht direkt ausgegeben werden, sondern muss in
einen ASCII String umgewandelt werden. Dazu existiert die Methode c_str():
cout << "Kfz-Zeichen: " << this->kfzZeichen.c_str() << endl;lol
SideWinder schrieb:
Bin für 350€ dabei.
€ 345,-
-
€ 320 & ein Eis in der Waffel, bitte.
EDIT:
Swordfish schrieb:
Bektas schrieb:
Achten Sie auf eine saubere Garbage Collection!
Hinweise:
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu
übergeben. Dazu muss ein Cast verwendet werden:
CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978);
(2) Beim Streaming kann die Klasse string nicht direkt ausgegeben werden, sondern muss in
einen ASCII String umgewandelt werden. Dazu existiert die Methode c_str():
cout << "Kfz-Zeichen: " << this->kfzZeichen.c_str() << endl;lol
omg. nein, oder?
-
Bin für strikteres NC
-
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu übergeben. Dazu muss ein Cast verwendet werden: CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978); (2) Beim Streaming kann die Klasse string nicht direkt ausgegeben werden, sondern muss in einen ASCII String umgewandelt werden. Dazu existiert die Methode c_str(): cout << "Kfz-Zeichen: " << this->kfzZeichen.c_str() << endl;
Ist es möglich, dass ihr euch einen neuen Lehrer besorgt?
-
Die zunehmende Anzahl solcher Fragen: "Ich/wir haben eine Aufgabe zum Lernen bekommen und wissen nicht, wie diese zu lösen ist" wird langsam erschreckend.
Schande über euch oder ordentlich was raustun!!! Wollt ihr etwas lernen oder müsst ihr das nur? Früher gab es in jeder tausendsten Cornflake-Packung ein fertiges Abschlussdiplom!
-
SideWinder, ein paar Stunden?! Das dauert Fünf Minuten!
-
DU MACHST DEN PREIS KAPUTT, NARR!
-
Swordfish schrieb:
DU MACHST DEN PREIS KAPUTT, NARR!
Und schon hab' ich den Fisch am Haken
-
Geh' lieber hin, und beantworte die an dich gerichteten Fragen zur Komplexitätstheorie.
-
Das hab' ich schon. Wie du siehst habe ich davon eher wenig als viel Ahnung.
-
Sone schrieb:
P.S.: Das hab' ich schon. Wie du siehst habe ich davon eher wenig als viel Ahnung.
Ah ja. Wiedermal ein Volltreffer . Magst vielleicht die noch offene Frage beantworten, was eine (Komplexitäts-) Klasse ist - zwecks Comedy am Abend?
-
Swordfish schrieb:
Sone schrieb:
P.S.: Das hab' ich schon. Wie du siehst habe ich davon eher wenig als viel Ahnung.
Ah ja. Wiedermal ein Volltreffer . Magst vielleicht die noch offene Frage beantworten, was eine (Komplexitäts-) Klasse ist - zwecks Comedy am Abend?
Man unterteilt Probleme/Algorithmen nach ihrer Komplexität in Komplexitätsklassen.
Und was war daran so witzig?
-
Sone schrieb:
Man unterteilt Probleme/Algorithmen nach ihrer Komplexität in Komplexitätsklassen.
Man unterteilt Fragesteller und Antworter hier im Forum in die Hauptklassen [ Troll ] - [ Kein Troll ]. Von diesen Hauptklassen gibt es zahlreiche Unterklassen, in die sich jeder selbst einordnen darf. Auch diese Klasseneinteilung ist sehr komplex! Zum Thema: daddeldu!
-
ich biete das für 10€ an, falls ihr beweisen könnt, dass ihr danach nen neuen Lehrer bekommt
-
Cyres schrieb:
ich biete das für 10€ an, falls ihr beweisen könnt, dass ihr danach nen neuen Lehrer bekommt
Wir?
-
Hallo[,] wir haben in der Uni eine Aufgabenstellung bekommen und würden uns freuen[,] wenn wir hi[e]r im Forum mal eine Musterlösung dazu bekommen würden[...]
-
CFahrzeug(string identNummer, string kfzZeichen, unsigned short baujahr);
Lol. Und der Lehrer weiß es nicht besser? Oder steht dann in der Initialisierungsliste tatsächlich
std::move
(was immer noch völlig bescheuert wäre)? Oh stopp, da der Parameter den gleichen Identifier wie der Member hat, kann man ihn überhaupt nicht in ner Initialisierungsliste initialisieren....Zum Klassendesign sage ich jetzt mal auch nichts.
Und wer sagt bitteschön "deklarieren und programmieren"? Sagt man nicht entweder deklarieren und definieren oder programmieren oder nur definieren...?
Google: "deklarieren und programmieren" (6 Ergebnisse)
Google: "deklarieren und definieren" (6370 Ergebnisse)Und wieso kann man die Fahrzeugart noch nachträglich ändern? Das sollte doch in den Konstruktor und in der Klasse konstant sein, genau wie das Baujahr auch?
Oder wer werkelt von heute auf morgen eine Limousine zum Geländewagen um?
Und wieso man zum ausgeben die Methode Print() so verwendet ist mir Schleierhaft. Statt einfach den insertion-operator zu überladen und das ganze Stream-Unabhängig und mit Lerneffekt zu machen (obwohl hier der Punkt ins Spiel kommt ob die das überhaupt schon hatten... )So will es der Lehrer (1):
class CFahrzeug { std::string identNummer, kfzZeichen; unsigned baujahr; enum e_fahrzeugArt { unbekannt, pkw, lkw } typ; bool overdrive; public: CFahrzeug(std::string const& _identNummer, //Das konnte ich nicht so stehen lassen std::string const& _kfzZeichen, unsigned short _baujahr): identNummer(_identNummer), kfzZeichen(_kfzZeichen), baujahr(_baujahr), typ(unbekannt), overdrive(false) { } bool SetFahrzeugArt(e_fahrzeugArt arg) { typ = arg; } bool SetOverdrive(bool arg) { overdrive = arg; } bool Print() const //Der Prof hat den const-specifier vergessen { std::cout << "Ident-Nr: " << identNummer << "\n" "Kfz-Zeichen: " << kfzZeichen << "\n" "Art: " << typ << "\n" "Overdrive: " << (overdrive ? "ja" : "nein"); return std::cout; } };
Aufgabe 2 gibt mir den Rest.
Erstellen Sie im gleichen Projekt eine Klasse CFurhpark mit einem Feld fahrzeugListe
von Zeigern des Typs CFahrzeug.Wieso Zeiger?
Das Feld soll bis zu 10 solche Zeiger halten können.
Wieso nur Zehn?
Dazu ist eine Konstante cMaxArrayLength zu deklarieren
Bitte was? C-Arrays!?
Verwenden Sie hier keine Präprozessor
Direktive!Wieso zum Teufel sollte das jemand tun wollen?
Benutzen Sie die Funktion main() zum Testen Ihres Programms.
Das ist Comedy, Schwertfisch! XD
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu
übergeben. Dazu muss ein Cast verwendet werden:
CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978);Und das ist auch noch falsch. Hat er einen Compiler aus den wilden Achzigern?
(2) Beim Streaming kann die Klasse string nicht direkt ausgegeben werden, sondern muss in
einen ASCII String umgewandelt werden. Dazu existiert die Methode c_str():
cout << "Kfz-Zeichen: " << this->kfzZeichen.c_str() << endl;Wieder völlig falsch. Das wird schon intern im überladenen Operator gemacht, damit wir es nicht tun müssen.
Also (2) ist einfach zu heftig. Da sind 350€ schon gerechtfertigt.
-
Sone schrieb:
(1) Es ist nicht möglich, Literale an Schnittstellenparametern vom Typ string direkt zu
übergeben. Dazu muss ein Cast verwendet werden:
CFahrzeug * pMyCar = new CFahrzeug(string("Wahl 001"), string("S-AP 1234"), 1978);Und das ist auch noch falsch. Hat er einen Compiler aus den wilden Achzigern?
Nö, er hats wahrscheinlich einfach mal probiert, ohne #include <string> und der Compiler hat irgendeine blöde Fehlermeldung ausgespuckt, also gehts nicht...