HILFE bei if else :(



  • Hallo, ich habe ein kleinen Programm in Visual Studio erstellt, wo ich zwei Objekte erzeugen kann.

    Ausgabe im Compiler:

    ID 1000
    Hersteller Mercedes
    Baujahr 2015
    Leistung 320 PS
    Art Cabrio
    Gewicht 1 Tonne

    ID 1001
    Hersteller Ferari
    Baujahr 2015
    Leistung 420 PS
    Art Cabrio
    Gewicht 2 Tonnen

    Ich möchte jett das Gewicht der beiden erstellten Objekte vergleichen und derjenige Hersteller, der weniger wiegt, bekommt einen Bonus. Was dann auch in der Konsole ausgegeben sollte. Wie mache ich das, bin am verzweifeln. 😕

    Zu meinem Programm, habe 3 cpp und 2 Header Dateien. Das Gewicht ist in der Klasse "Pkw" und der Hersteller ist in der Klasse "Fahrzeuge".

    Fahrzeuge.h

    #ifndef FAHRZEUGE_H
    #define FAHRZEUGE_H
    
    class Fahrzeuge
    {
    private:
    	static int serial;
    	unsigned int m_id;
    	char* m_hersteller;
    	unsigned int m_baujahr;
    	unsigned int m_mleistung;
    
    public:
    	Fahrzeuge(char* hersteller, unsigned int baujahr, unsigned int mleistung);
    	~Fahrzeuge();
    	Fahrzeuge(Fahrzeuge &otherFahrzeuge);
    	Fahrzeuge &operator=(Fahrzeuge &otherFahrzeuge);
    
    	//Set Methode
    	void setHersteller(char* hersteller);
    	void setBaujahr(unsigned int baujahr);
    	void setMleistung(unsigned int mleistung);
    
    	//Get Methode
    	char* getHersteller() { return m_hersteller; }
    	unsigned int getBaujahr() { return m_baujahr; }
    	unsigned int getMleistung() { return m_mleistung; }
    
    	void destroy();
    	void print();
    
    };
    
    #endif
    
    Fahrzeuge.cpp
    
    #include"Fahrzeuge.h"
    #include<iostream>
    
    using namespace std;
    
    int Fahrzeuge::serial = 1000;
    
    Fahrzeuge::Fahrzeuge(char* hersteller, unsigned int baujahr, unsigned int mleistung) :m_id(serial++)
    {
    	this->m_hersteller = new char[strlen(hersteller) + 1];
    	strcpy(this->m_hersteller, hersteller);
    	this->m_baujahr = baujahr;
    	this->m_mleistung = mleistung;
    }
    
    Fahrzeuge::~Fahrzeuge() 
    {
    	destroy();
    }
    
    Fahrzeuge::Fahrzeuge(Fahrzeuge &otherFahrzeuge) :m_id(serial++)
    {
    	this->m_hersteller = new char[strlen(otherFahrzeuge.m_hersteller) + 1];
    	strcpy(this->m_hersteller, otherFahrzeuge.m_hersteller);
    	this->m_baujahr = otherFahrzeuge.m_baujahr;
    	this->m_mleistung = otherFahrzeuge.m_mleistung;
    }
    
    Fahrzeuge &Fahrzeuge::operator=(Fahrzeuge &otherFahrzeuge) 
    {
    	if (this != &otherFahrzeuge)
    	{
    		void destroy();
    		this->m_hersteller = new char[strlen(otherFahrzeuge.m_hersteller) + 1];
    		strcpy(this->m_hersteller, otherFahrzeuge.m_hersteller);
    		this->m_baujahr = otherFahrzeuge.m_baujahr;
    		this->m_mleistung = otherFahrzeuge.m_mleistung;
    	}
    	return *this;
    }
    
    void Fahrzeuge::destroy() 
    {
    	delete[] m_hersteller;
    }
    
    void Fahrzeuge::print() 
    {
    	cout << "ID\t\t\t: " << m_id << endl;
    	cout << "Hersteller\t\t: " << m_hersteller << endl;
    	cout << "Baujahr\t\t\t: " << m_baujahr << endl;
    	cout << "Motorenleistung\t\t: " << m_mleistung << " PS" << endl;
    }
    
    Pkw.h
    
    #ifndef PKW_H
    #define PKW_H
    #include"Fahrzeuge.h"
    
    class Pkw:public Fahrzeuge
    {
    private:
    	char* m_art;
    	double m_gewicht;
    
    public:
    	Pkw(char* art, double gewicht, char* hersteller, unsigned int baujahr, unsigned int mleistung);
    	~Pkw();
    
    	//Set Methode
    	void setArt(char* art);
    	void setGewicht(double gewicht);
    
    	//Get Methode
    	char* getArt() { return m_art; }
    	double getGewicht() { return m_gewicht; }
    
    	void printPkw();
    
    };
    #endif /* PKW_H */
    
    Pkw.cpp
    
    #include"Pkw.h"
    #include<iostream>
    
    using namespace std;
    
    Pkw::Pkw(char* art, double gewicht, char* hersteller, unsigned int baujahr, unsigned int mleistung) :Fahrzeuge(hersteller, baujahr, mleistung)
    {
    	this->m_art = new char[strlen(art) + 1];
    	strcpy(this->m_art, art);
    	this->m_gewicht = gewicht;
    }
    
    Pkw::~Pkw() 
    {
    	delete[]m_art;
    }
    
    void Pkw::printPkw() 
    {
    	print();
    	cout << "Art\t\t\t: " << m_art << endl;
    	cout << "Gewicht\t\t\t: " << m_gewicht << "\n" << endl;
    }
    
    main.cpp
    
    #include<iostream>
    #include"Fahrzeuge.h"
    #include"Pkw.h"
    
    using namespace std;
    
    int main() 
    {
    	Pkw p1("Cabrio", 1, "Mercedes", 2015, 320);
    	p1.printPkw();
    
    	Pkw p2("Limousine", 3, "Bentley", 2015, 400);
    	p2.printPkw();
    
    	system("pause");
    }
    

    Edit durch Arcoth: Code-Tags


  • Mod

    Wie mache ich das, bin am verzweifeln. 😕

    Wir auch, bei deinem Post.
    Einfach 170 Zeilen reinpasten und darauf zu hoffen, dass wir die entsprechenden Änderungen vornehmen, ist verdammt optimistisch.

    Du brauchst Hilfe?
    Wie man seinen Beitrag lesbar formatiert



  • Nutzlose und gefährliche Funktionen sind op== und copyconst in der Basisklasse. Wie man sieht, auch für wenigstens einen Datenfehler verantwortlich, nähmlich im Pkw vergessen worden, Daten an den Basisklassenkonstruktor weiterzuleiten.
    Außerdem std::string nehmen oder selbergebaute Stringklasse und dafür in den Klassen der Geschäftslogik die "Großen Drei" loswerden.


Anmelden zum Antworten