019
06.10.2004, 21:51 Uhr
0xdeadbeef
Gott (Operator)
|
Der Code den du da bisher hast, ist das Äquivalent eines halbfertigen Kartenhauses inmitten eines Tornados - kann jeden Augenblick zusammen brechen. Das ist weder C noch C++, sondern so ne Art C-mit-Klassen-aber-nur-ein-bisschen, das leider nur allzugern von VHS-Lehrern auf der ganzen Welt gelehrt wird. Vergiss diese Art zu Programmieren schleunigst.
Also gut. Bevor du die erste Zeile Code schreibst, musst du dir klar machen, welche Zusammenhänge du eigentlich hast und brauchst. Du brauchst erst mal ein Modell, das du umsetzen willst. Wenn ich das richtig sehe, läuft es in diesem Fall darauf hinaus, dass du eine Menge von Kunden hast, die bestimmte Artikel in bestimmter Menge zu bestimmten Preisen kaufen. Das heißt, du hast im Grunde Kunden, die eine Liste von Einkaufsposten haben. Der Gesamtpreis eines Einkaufspostens hängt vom Einkaufsposten ab, der Gesamtpreis, den der Kunde nachher bezahlt, vom Kunden, und so weiter und so weiter - was du alles brauchst, musste schon selbst wissen.
In C++ sieht das nachher etwa so aus:
C++: |
#include <list> #include <string>
struct einkaufsposten { std::string name; double einzelpreis; int anzahl;
einkaufsposten(std::string const &n, double ep, int az) : name(n), einzelpreis(ep), anzahl(az) { }
double gesamtpreis() { return anzahl * einzelpreis; } };
class kunde { private: std::list<einkaufsposten> warenkorb; std::string my_name;
public: kunde(std::string const &name) : my_name(name) { }
std::string const &name() const { return my_name; } double gesamtsumme() const { double summe = 0.0;
for(std::list<einkaufsposten>::const_iterator i = warenkorb.begin(); i != warenkorb.end(); ++i) summe += i->gesamtpreis();
return summe; }
void einkaufen(einkaufsposten &ep) { warenkorb.push_back(ep); }
//...weitere Funktionen };
|
Nachher kannst du dann hingehen und z.B.
C++: |
#include "einkaufsposten.h" #include "kunde.h"
#include <fstream> #include <list> #include <string>
int main() { std::list<kunde> kundenliste; std::ifstream in("datei.txt"); std::string zeile;
while(std::getline(in, zeile)) { // Zeile auseinanderparsen, Kuden konstruieren, hinten an die Liste packen usw. }
for(std::list<kunde>::iterator i = kundenliste.begin(); i != kundenliste.end(); ++i) std::cout << "Kunde " << i->name() << " bezahlt: " << i->gesamtpreis() << std::endl; }
|
machen. So würde ich das zumindest anfangen.
Ich hoffe, das hilft dir zumindest ein bisschen -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 06.10.2004 um 21:52 Uhr von 0xdeadbeef editiert. |