Datenstruktur gesucht
-
Hallo Community,
ich möchte ein Programm schreiben, bei dem der Benutzer Menge, Preis und Artikelname eingibt. Dies kann er sooft wiederholen, wie er will.
Am Schluss soll eine Ausgabe wie die folgende gemacht werden:
3x Brot: 0.90 €
1 Wein: 12.50 €Total: 14.50 €
Ich weiß aber noch nicht genau, wie ich die Daten am besten abspeichere, damit die Ausgabe leicht implementiert werden kann. Ich dachte zuerst daran, einen je einen vector für Menge, Preis und Artikelname zu spendieren, doch ist die Auswertung komplizierterm, weil die Eingaben ja in beliebiger Reihenfolge gemacht werden können
Gibt es da eine praktischere Datenstruktur?
Danke schonmal
-
std::map<std::unique_ptr<article>, std::uint32_t>
Der Artikel kennt seinen Preis, der zweite Eintrag ist die Anzahl. Ob Artikel wirklich polymorph sein muss, oder ob man z.B. auch einfach eine ID speichern könnte, kann man nur mit mehr Informationen entscheiden.
-
Wie soll bitte eine map mit einem
unique_ptrals Key Sinn machen? Die Frage ist ernst gemeint, also erklär mir das mal.Und hallo, der Typ ist blutiger Anfänger, was soll er mit
PolymorphismusPolymorphie bzw. überhaupt einer eigenen Artikel-Klasse?----
struct Eintrag { std::string Artikelname; unsigned int Menge; unsigned int Preis; // In Cent }; std::vector<Eintrag> Einkaufsliste;Tadaa
-
hustbaer schrieb:
Wie soll bitte eine map mit einem
unique_ptrals Key Sinn machen? Die Frage ist ernst gemeint, also erklär mir das mal.Ja, da fehlt wohl nen expliziter Compare.
hustbaer schrieb:
Und hallo, der Typ ist blutiger Anfänger, was soll er mit Polymorphismus bzw. überhaupt einer eigenen Artikel-Klasse?
Dass man Polymorphismus uU nicht braucht, habe ich doch schon geschrieben. Eine eigene Artikel-Klasse macht trotzdem mehr Sinn als dein Vorschlag. Überleg doch mal, wie das benutzt wird. So muss man jedes mal manuell durch den vector gehen, nach dem passenden Namen suchen und die Menge erhöhen. Die map erledigt das für einen.
-
Polymorphie?
Aber klar.
Wurstbrot erbt von Supermarkt
-
cooky451 schrieb:
hustbaer schrieb:
Und hallo, der Typ ist blutiger Anfänger, was soll er mit Polymorphismus bzw. überhaupt einer eigenen Artikel-Klasse?
Dass man Polymorphismus uU nicht braucht, habe ich doch schon geschrieben. Eine eigene Artikel-Klasse macht trotzdem mehr Sinn als dein Vorschlag. Überleg doch mal, wie das benutzt wird. So muss man jedes mal manuell durch den vector gehen, nach dem passenden Namen suchen und die Menge erhöhen. Die map erledigt das für einen.
Ich glaube nicht dass der OP das will.
-
Wozu ist denn so ein Einkaufskorb sonst gut?
-
...
-
Das mit dem Wurstbrot macht ja sinn. Wobei ich das Brot eher von der Wurst ableiten würde, weil man dann per Type-Slicing die Wurst vom Brot runterbekommt. Bei Butter würde ich das so nicht machen, schließlich bleibt immer ein bisschen Butter am Brot kleben, daher eher ein Member.
Ich finde auch auch, dass das Wurstbrot vom Supermarkt ableitet ist kein wirkliches OOP, es müsste andersherum sein. Schließlich nimmt kaum jemand dem Brot den Supermarkt weg, es ist ja andersherum!Also:
class Wurst { }; class Brot { }; class Wurstbrot : public Brot, public Wurst { public: Butter butter_; }; class Supermarkt : public Wurstbrot, public Wurst { };
-
...
-
Ein Supermarkt ist ein Wurstbrot?!
-
Ja, denn das hier sollte funktionieren:
void klaue_Wurst_BeiAdresse( Wurst* wurst ) { cout << *wurst << " wird geklaut!"; delete wurst; } int main() { Supermarkt penny_; klaue_Wurst_BeiAdresse( &penny_ ); }Aus nachvollziehbaren Gründen muss es auch lauten:
class Mensch : public Wurstbrot { };Denn der Mensch isst ein Wurstbrot.