Suche hilfe beim programmieren mit c++



  • Hallo,

    unser lehrer hat uns eine hausaufgabe aufgegeben, wo ich noch null durch steige.
    ich weis nicht wo ich anfangen soll.

    bitte euch um hilfe.

    hier wer die "hausaufgabe"

    Aufgabe Fachinformatiker:
    Erstellen Sie ein C++-Programm mit folgenden Inhalten:
    Erstellen einer Klasse Auto

    Attribute:
     geschwindigkeit
     zustand (offen, verschlossen)
     motor (an-aus)
     farbe
     typ
     ps
     vmax

    Methoden:
     beschleunigen (um dv)
     bremsen (um dv)
     hupen
     öffnen
     starten
     spritzen
     tunen

    Folgende Punkte sollen beachtet werden:
     Beim fortlaufenden Bremsen darf v nicht kleiner als 0 werden
     die Geschwindigkeit darf nicht größer vmax werden
     Fahrzeug kann nur bei laufenden Motor beschleunigt werden
     Motor kann erst bei geöffneten Fahrzeug gestartet werden und auch nur dann, wenn er noch
    nicht gestartet ist
     Das Tuning darf nur so erfolgen, daß der aktuelle PS-Wert nur um max. 20% gesteigert
    werden kann

    Speichern Sie die Klassendeklaration in der Datei Cauto.h, die Klassendefinition in der Datei
    Cauto.cpp und das Hauptprogramm unter Auto.cpp ab.
    Das Hauptprogramm soll mehrere Fahrzeuginstanzen erzeugen und diese sollen über ein Menü
    „gesteuert“ werden.

    bin euch für jede hilfe sehr dankbar.

    grüße chi



  • Was ist fisi? hört sich nach was perversem an.

    Was ist das Problem steht doch schon alles da was gemacht werden soll.



  • Was klappt denn nicht? Wie es in der Aufgabe schon steht, sollst du eine Klasse namens "Auto" schreiben. Wenn du Klassen schon in deinem Buch hattest, dürftest du damit doch keine Probleme haben. Ansonsten schlag das entsprechende Kapitel deines Buches auf oder such im Internet nach dem Tutorial deiner Wahl.



  • bin euch für jede hilfe sehr dankbar.

    Was brauchst du denn genau?

    Fang halt an mit

    class Auto{
    float geschwindigkeit;
    bool zustand; //(offen, verschlossen)
    bool motor; //(an-aus)
    int farbe;
    ...
    
    };
    


  • #include <iostream>
    using namespace std;
    
    class Auto
    {
     private:
     float   kmh;
     bool    zustand;
     bool    motor;
     string  farbe;
     int     ps;
     int     vmax;
    
     public:
     Auto();
     ~Auto();
    
     void  beschleunigen();
     void  bremsen();
     void  hupen();
     void  öffnen();
     void  starten();
     void  spritzen();
     void  tunen();
    };
    
    Auto::Auto()
    {
    	kmh=156.89; //Maximale Geschwindigkeit
    	zustand=true; //Auto ist verschlossen
    	motor=false; //Auto ist abgeschlossen
    	farbe="Blau-Metallic"; //Farbe des Autos
    	ps=115; //115 PS
    	vmax=20; //Keine Ahnung, nehme an die Beschleunigung!?
    }
    
    Auto::~Auto()
    {
    	kmh=NULL; 
    	zustand=NULL; 
    	motor=NULL; 
    	farbe=""; 
    	ps=NULL; 
    	vmax=NULL; 
    }
    
    void Auto::beschleunigen()
    {
    	cout<<"Beschleunigung: "<< vmax <<endl;
    };
    
    void Auto::bremsen()
    {
    	kmh=0.0;
    	cout<<"Auto bremst, Geschwindigkeit: "<< kmh <<endl;
    };
    
    void Auto::hupen()
    {
    	cout<<"Moehp moehp, Auto hupt!"<<endl;
    };
    
    void Auto::öffnen()
    {
    	if(zustand) //Auto abgeschlossen?
    	{
    		cout<<"Auto ist abgeschlossen, es wird jetzt aufgeschlossen. Auto abgeschlossen? "<< zustand <<endl;
    	}
    	else	    //Auto offen
    	{
    		cout<<"Auto ist offen, es wird nun geschlossen. Auto abgeschlossen ?"<< zustand <<endl;
    	}
    };
    
    void Auto::starten()
    {
    	cout<<"Auto wurde gestartet"<<endl;
    };
    
    void Auto::spritzen()
    {
    	cout<<"Auto hat sich ein gewichst"<<endl;
    };
    
    void Auto::tunen()
    {
    	cout<<"Auto wurde voll krass aufgetunet alter!"<<endl;
    };
    
    int main(void)
    {
    	Auto Audi; //Der Autotyp muss nicht als Attribut deklariert werden. Man
    			   //kann die Automarke besser über den Objektnamen angeben.
    
    	Audi.beschleunigen();
    	Audi.bremsen();
    	Audi.hupen();
    	Audi.spritzen();
    	Audi.starten();
    	Audi.tunen();
    	Audi.öffnen();
    
    cin.get();
    }
    

    Hatte eh grad langeweile...
    Du kannst, wenn du später noch mit den Methoden arbeiten möchtest, einen Zeiger draus machen und einen Wert zurückgeben lassen. Dieser Rückgabewert kann dann ein Attribut sein...



  • way schrieb:

    Hatte eh grad langeweile...

    Manche lernen es wohl nie... 🙄

    way, begreifst du denn nicht, dass damit niemandem wirklich geholfen ist? chi hat den Auftrag, die Hausaufgabe selber zu lösen. Wenn du ihm einfach den Code gibst, lernt er dabei nichts. Ausserdem soll nicht der Eindruck erweckt werden, dass in diesem Forum die Hausaufgaben gelöst werden.



  • Wenn er nichtmal ansatzweise nen Plan davon hat, wird es sich noch nie mit C++ befasst haben....soll der arme Junge denn ne 6 bekommen?



  • way schrieb:

    Wenn er nichtmal ansatzweise nen Plan davon hat, wird es sich noch nie mit C++ befasst haben....soll der arme Junge denn ne 6 bekommen?

    Jetzt machst du einen auf Mitleid?

    Mal abgesehen davon, dass deine Lösung alles andere als ein gutes Vorbild ist*, würde ihm auch ein guter Ansatz nichts bringen. Und zwar aus oben genanntem Grund, dass er nichts daraus lernt und dann nur noch mehr Probleme bekommt, weil er mit dem darauf aufbauenden Stoff nicht mehr klarkommt. Besser, er lernt es jetzt.

    * Du willst deinen Code doch nicht im Ernst als brauchbar bezeichnen? Hier nur einige Auszüge:

    Auto::~Auto()
    {
        kmh=NULL; 
        zustand=NULL; 
        motor=NULL; 
        farbe=""; 
        ps=NULL; 
        vmax=NULL; 
    }
    
    string  farbe; // ohne dass string bekannt ist
    
    bool    zustand; // sagt recht viel aus, eine bool-Variable ist nämlich eher selten ein Zustand...
    
    void Auto::beschleunigen() // was soll hier beschleunigt werden? kmh ändert sich ja nicht mal.
    {
        cout<<"Beschleunigung: "<< vmax <<endl;
    };
    

    So etwas hilft echt keinem. Ich denke, Weiteres kann ich mir sparen... 🙄



  • Nexus schrieb:

    So etwas hilft echt keinem. Ich denke, Weiteres kann ich mir sparen... 🙄

    👍 👍
    den Konstruktor will ich aber noch unbedingt erwähnt haben 😉
    @ way:
    Was bitteschön bringt das da alle Attribute zu setzen?
    Jedes Objekt vom Typ Auto ist dann gleich, ganz toll ...
    Der Konstruktor sollte dazu da sein, dass man die Attribute bei der Objekterstellung initialisiert, Defaultkonstruktor als Ergänzung schön und gut, aber ein konstruktor bei dem der, der die Klasse benutzt die Attribute selber setzt, ist wesentlich sinnvoller.



  • Paul Manns schrieb:

    den Konstruktor will ich aber noch unbedingt erwähnt haben 😉

    Gut. 🙂

    Was dazukommt, ist, dass im Konstruktor alles per Zuweisung initialisiert wird. Wofür gibt es Initialisierungslisten?



  • Jedes Objekt vom Typ Auto ist dann gleich, ganz toll ...

    Jo klar, dass stimmt schon. Deswegen sagte ich ja bereits, dass man die Methode als ein Zeiger vom Typ blablabla anlegt, einen neuen Parameter erzeugt, ihn wieder an das Attribut übergibt und das Attribut zurückgeben.

    //In der Klasse
    private:
     int wert_1;
     //blablabla...
    pulic:
     int *ausgabe(int wert_2);
     //blablabla...
    
     int *Klasse::ausgabe(int wert_2)
     { 
      wert_2=wert_1;
      return wert_1;
     };
    

    Dann hätte man es genau so, wie du es wolltest. Gibt aber mit Sicherheit auch bessere Lösungen...entschuldigt mich, wenn euch mein Code nicht gefällt (:



  • way schrieb:

    Jedes Objekt vom Typ Auto ist dann gleich, ganz toll ...

    Jo klar, dass stimmt schon. Deswegen sagte ich ja bereits, dass man die Methode als ein Zeiger vom Typ blablabla anlegt, einen neuen Parameter erzeugt, ihn wieder an das Attribut übergibt und das Attribut zurückgeben.

    //In der Klasse
    private:
     int wert_1;
     //blablabla...
    pulic:
     int *ausgabe(int wert_2);
     //blablabla...
    
     int *Klasse::ausgabe(int wert_2)
     { 
      wert_2=wert_1;
      return wert_1;
     };
    

    Oh je, du hast es nicht verstanden. Es geht darum, dass der Konstruktor Argumente aufnehmen soll, um somit das Auto-Objekt individuell instanziieren zu können. Zudem enthält bereits dieser kleine Codeabschnitt von dir wieder so viele Fehler, dass er sich nicht mal kompilieren lassen sollte (int* != int). Und "blablabla" ersetzte doch bitte mit T, dann weiß hier jeder, was gemeint ist...



  • way schrieb:

    Jo klar, dass stimmt schon. Deswegen sagte ich ja bereits, dass man die Methode als ein Zeiger vom Typ blablabla anlegt, einen neuen Parameter erzeugt, ihn wieder an das Attribut übergibt und das Attribut zurückgeben.

    Wozu etwas hinfrickeln, das möglicherweise sowieso nicht geht, wenn man es mit Konstruktoren viel einfacher tun könnte?

    way schrieb:

    Gibt aber mit Sicherheit auch bessere Lösungen...entschuldigt mich, wenn euch mein Code nicht gefällt (:

    Mit Sicherheit. Das Problem ist aber nicht nur, dass dein Code unbrauchbar ist, sondern wie gesagt auch, dass der Threadersteller dabei nichts lernt. Bitte achte in Zukunft darauf, nicht mehr die Hausaufgaben anderer zu erledigen, schon gar nicht, wenn man ihnen dabei nur schlechte Dinge angewöhnt.

    Um noch etwas zum Thema zu sagen:

    @ chi:
    Wie weit bist du denn schon? Wo kommst du nicht mehr weiter? Wie gesagt können wir hier nicht deine Aufgaben lösen. Wenn du aber ein konkretes Problem hast, kannst du gerne wieder Fragen stellen. Aber dann bitte nicht einfach den ganzen Quellcode posten mit dem Zusatz "geht nicht". 😉



  • Nexus schrieb:

    way schrieb:

    Hatte eh grad langeweile...

    Manche lernen es wohl nie... 🙄

    way, begreifst du denn nicht, dass damit niemandem wirklich geholfen ist? chi hat den Auftrag, die Hausaufgabe selber zu lösen. Wenn du ihm einfach den Code gibst, lernt er dabei nichts. Ausserdem soll nicht der Eindruck erweckt werden, dass in diesem Forum die Hausaufgaben gelöst werden.

    Dito. Woher nimmst Du das Recht, andere bzgl. des Inhalts ihrer Posts zu belehren? Das ist nicht Deine Aufgabe und - ehrlich gesagt - mir geht's auf die Nerven. Dafür gibt es Moderatoren.

    Das der OP daraus unter Umständen nichts lernt bzw. lernen will, fällt wohl unter die Rubrik Eigenverantwortung. Weshalb sollten andere Forenmember für ihn Gewissen spielen? Es ist allein seine Sache, was er daraus macht - oder auch nicht macht.

    Was way's "Codebeispiel" angeht enthalte ich mich. 😉

    cheers, Swordfish



  • way schrieb:

    #include <iostream>
    using namespace std;
    
    class Auto
    {
     private:
     float   kmh;
     bool    zustand;
     bool    motor;
     string  farbe;
     int     ps;
     int     vmax;
     
     public:
     Auto();
     ~Auto();
    
     void  beschleunigen();
     void  bremsen();
     void  hupen();
     void  öffnen();
     void  starten();
     void  spritzen();
     void  tunen();
    };
    
    Auto::Auto()
    {
    	kmh=156.89; //Maximale Geschwindigkeit
    	zustand=true; //Auto ist verschlossen
    	motor=false; //Auto ist abgeschlossen
    	farbe="Blau-Metallic"; //Farbe des Autos
    	ps=115; //115 PS
    	vmax=20; //Keine Ahnung, nehme an die Beschleunigung!?
    }
    
    Auto::~Auto()
    {
    	kmh=NULL; 
    	zustand=NULL; 
    	motor=NULL; 
    	farbe=""; 
    	ps=NULL; 
    	vmax=NULL; 
    }
    
    void Auto::beschleunigen()
    {
    	cout<<"Beschleunigung: "<< vmax <<endl;
    };
    
    void Auto::bremsen()
    {
    	kmh=0.0;
    	cout<<"Auto bremst, Geschwindigkeit: "<< kmh <<endl;
    };
    
    void Auto::hupen()
    {
    	cout<<"Moehp moehp, Auto hupt!"<<endl;
    };
    
    void Auto::öffnen()
    {
    	if(zustand) //Auto abgeschlossen?
    	{
    		cout<<"Auto ist abgeschlossen, es wird jetzt aufgeschlossen. Auto abgeschlossen? "<< zustand <<endl;
    	}
    	else	    //Auto offen
    	{
    		cout<<"Auto ist offen, es wird nun geschlossen. Auto abgeschlossen ?"<< zustand <<endl;
    	}
    };
    
    void Auto::starten()
    {
    	cout<<"Auto wurde gestartet"<<endl;
    };
    
    void Auto::spritzen()
    {
    	cout<<"Auto hat sich ein gewichst"<<endl;
    };
    
    void Auto::tunen()
    {
    	cout<<"Auto wurde voll krass aufgetunet alter!"<<endl;
    };
    
    int main(void)
    {
    	Auto Audi; //Der Autotyp muss nicht als Attribut deklariert werden. Man
    			   //kann die Automarke besser über den Objektnamen angeben.
    
    	Audi.beschleunigen();
    	Audi.bremsen();
    	Audi.hupen();
    	Audi.spritzen();
    	Audi.starten();
    	Audi.tunen();
    	Audi.öffnen();
    
    cin.get();
    }
    

    😃 👍
    Also das ist der Erste Beitrag von way, der wirklich gut war.



  • [OT]
    *hust* Ich weiss garnicht was du meinst? *hust*
    [/OT]



  • Swordfish schrieb:

    Dito. Woher nimmst Du das Recht, andere bzgl. des Inhalts ihrer Posts zu belehren? Das ist nicht Deine Aufgabe und - ehrlich gesagt - mir geht's auf die Nerven. Dafür gibt es Moderatoren.

    Ehrlich gesagt will ich jetzt keinen Streit anfangen. Aber ich weiss, dass du bereits in Konflikt geraten bist, weil du selber anderen die Hausaufgaben gelöst hast. Aber wenn du es unbedingt auf eine erneute Diskussion anlegst...

    Swordfish schrieb:

    Das der OP daraus unter Umständen nichts lernt bzw. lernen will, fällt wohl unter die Rubrik Eigenverantwortung. Weshalb sollten andere Forenmember für ihn Gewissen spielen? Es ist allein seine Sache, was er daraus macht - oder auch nicht macht.

    Das ist aber eine ziemlich engstirnige Sichtweise. Erstens mal dient dieses Forum dazu, Leuten bei Problemen zu helfen. Was bringt es ihnen, wenn man fehlerhaften Code empfiehlt? Wenn man noch nicht so erfahren ist, erkennt man das nicht und gewöhnt sich so schlechte Dinge an. Von daher finde ich es angebracht, wenn man auf die Fehler anderer hinweist - ich akzeptiere es schliesslich auch, wenn auf meine Fehler hingewiesen werden.

    Ausserdem erhält man auf diese Weise das Gefühl, man könne sich hier immer seine Hausaufgaben lösen lassen. Das führt unter anderem dazu, dass solche Threads hier in Zukunft häufiger auftreten, was auf Kosten der Leute mit ernsthaften Fragestellungen geht. Mal davon abgesehen, dass es ziemlich dreist ist, mit so einer Einstellung zu kommen.

    Swordfish schrieb:

    Was way's "Codebeispiel" angeht enthalte ich mich.

    Genau das hat aber auch zu meinem Post beigetragen.



  • Nexus schrieb:

    Ausserdem erhält man auf diese Weise das Gefühl, man könne sich hier immer seine Hausaufgaben lösen lassen. Das führt unter anderem dazu, dass solche Threads hier in Zukunft häufiger auftreten, was auf Kosten der Leute mit ernsthaften Fragestellungen geht. Mal davon abgesehen, dass es ziemlich dreist ist, mit so einer Einstellung zu kommen.

    Oh bitte...
    Die Leute werden trotzdem weiter ihre Beispiele posten. Glaubst du nur weil da irgendwer schreit interessiert das diejenigen die Hilfe brauchen?
    Keiner sieht sich diesen Post hier in ner Woche noch an.
    Und es hat auch keinerlei Einfluss auf die Leute die posten. Dann registrieren sie sich eben neu, posten unregistriert oder posten einfach so nochmal.
    Wenn dann nix kommt - Pech..aber probieren werden sies trotzdem.
    Außerdem sind da auch immer wieder neue Leute dabei die keine Ahnung von den "Regeln" haben und sich auch nicht dafür interessieren.
    Leute wie dich gibts in jedem Forum. In anderen bin ich auch so jmd aber prinzipiell lässt es sich trotzdem nicht verhindern. Weil trotzdem irgendwer das komplette Beispiel postet



  • Hey Leute ist doch gut jetzt, streitet euch doch nicht wegen mir. Bevor ihr euch weiter streitet, löscht einfach meinen Post (:



  • hallo,
    bin euch allen dankbar für die beiträge.
    fangt jetzt aber bitte keinen streit an.

    der gepo.. quellcode hilft mir nicht wirklich, weils nicht mein ziel ist irgend was fremdes als mein eigen auszugeben.

    ich kann bis dato
    mit cin und cout ein,ausgaben umgehen.(int char ..int main()..sagt mir auch was)
    hallo world<- das ist der stand wo ich bin.
    kleine rechen aufgaben gehen auch schon.
    viel mehr ist es noch nicht.
    da ich zum beruf des fachinformatiker systemintegration umschule(ins zweite lehrjahr geworfen wurde) ersuche ich hilfe.
    mit der hausaufgabe komm ich null zurecht weis nicht wie ich anfangen soll(wie ganz oben geschrieben).
    hab mir nen buch gekauft "oop von anfang an"

    womit mir das lernen nicht sehr leicht fällt.
    vllt kennt jemand stoff fürn blut anfängen(verständlich).
    hab leider auch sehr wenig zeit zum lernen arbeit....und und und.
    das c++ eine sehr schwierige sprache ist, ist mir voll kommen klar. und nicht von heut auf morgen zu erlernen ist. sie muss aber irgend wie in den kopf.
    sie interessiert mich sehr und sie gehört zum ausbildungsrahmenplan.
    wenn mir jemand dabei helfen kann und würde. wer ich dankbar.
    vllt mit aufgaben?! wie ich das so sehe haben hier viele echt richtig doll was drauf....


Log in to reply