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 TonneID 1001
Hersteller Ferari
Baujahr 2015
Leistung 420 PS
Art Cabrio
Gewicht 2 TonnenIch 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
-
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.
-
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.