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;


  • Mod

    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.


Log in to reply