Gebühr für Verein berechnen (Studienarbeit)
-
Schönen guten Abend,
ich hoff, Ihr könnt mir wieder helfen

Es geht um folgendes:
Ich hab ein Programm zur Crossverwaltung geschrieben. Und lege praktisch für jeden Läufer ein Objekt an. In dem Objekt sind auch die Startgebühren gespeichert.
Jetzt hab ich noch folgende Aufgabe, für den Fall, dass der Läufer bei einem Verein ist, soll die Startgebühr pro Verein angezeigt werden.Bisher sieht mein Programm so aus:
- Abfrage, ob Läufer einem Verein angehörig ist
- wenn ja, dann eingabe des Vereinsnamens
- weitere Eingaben des Läufers (Startnr, vorname bishin zum geschlecht)Die Gebühren anzeige ist kein Problem für eine einzelne Perosn, ich hab einfach das per attribut gebühr gespeichert.
Als Beispiel so sieht ein Objekt Läufer aus:
Startnr. 1, Vorname: Max, Nachname: Fischer, Geschlecht: m, vereinszugehörigkeit = j, vereinsname = testvereinDie objekte hab ich in einem Array der Klasse Läufer gespeichert: Laeufer la[500] Ich muss mich leider an die statische Speicherbelegung halten, weil das so vorgegeben ist.
wenn ich jetzt das menü "Gebühr der Läufer berechnen" aufrufe sollen einerseits die Gebühr der ganzen Läufer ohne Verein angezeigt werden, dass hab ich bereits geschafft.
Bloß eben sagen wir mal, der Verein Testläufer meldet 3 Läufer an, dann soll angezeigt werden: (pro läufer 5 eur)
Verein: Testläufer Gebühr: 15 EUR
Also mein Lösungsgedanke ist, dass es eine Möglichkeit geben muss, wo ich die gebühr (attribut) von dem einem Läuferobjekt la[0] übergebe, dann gebühr von la[1] dazu addiere.
Aber wie mach ich das?

-
Hat keiner eine Idee?
Wäre super, wenn mir einer helfen könnt, denn in 1 woche, ist abgabetermin
-
Hallo
Was hat dir an dieser Antwort nicht gefallen?
Oder an diesen?Übrigens es soll Unis/Schulen geben wo die zuständigen Lehrer in öffentlichen Foren nachschauen ob einige ihrer Schüler ganze Aufgaben dort posten und beantwortet haben wollen...
bis bald
akari
-
Martini123 schrieb:
Die objekte hab ich in einem Array der Klasse Läufer gespeichert: Laeufer la[500] Ich muss mich leider an die statische Speicherbelegung halten, weil das so vorgegeben ist.
das steht doch klar im Widerspruch zu:
ffw-hans schrieb:
Aufgabe:
Erstellen Sie ein lauffähiges C++-Programm unter Verwendung des Klassenkonzeptes ..Martini123 schrieb:
Also mein Lösungsgedanke ist, dass es eine Möglichkeit geben muss, wo ich die gebühr (attribut) von dem einem Läuferobjekt la[0] übergebe, dann gebühr von la[1] dazu addiere.
Aber wie mach ich das?

Na ja - genau so. Du benötigst die Gebühr, die ein Verein für seine Läufer zahlen soll. Die ist auch noch von der Anzahl der für diesen Verein angemeldeten Läufer abhängig. Also baut man sich eine kleine Struktur
struct Gebuehr // Gebühr für einen Verein { Gebuehr() : m_sum(0.0), m_anzLf(0) {} void add( double gebuehrProLaeufer ) { m_sum += gebuehrProLaeufer; ++m_anzLf; } double Sum() const { // Meldet ein Verein mindestens 3 Läufer an, so erhält er 10% Ermäßigung auf das Startgeld if( m_anzLf >= 3 ) return 0.9 * m_sum; return m_sum; } double m_sum; int m_anzLf; };man braucht noch eine Funktion (oder auch Methode), die Gebühren berechnet
double gebuehrberechnen( const Laeufer& l ) { if( l.istErwachsen() ) return 10.0; return 5.0; // Jugendliche 5.- EUR }Unter der Annahme, dass die Läufer-Klasse etwa so ausschaut (alles, was jetzt keine Rolle spielt, mal weggelassen)
class Laeufer { public: Laeufer( int alter, const std::string& verein = std::string() ) : m_alter( alter ) , m_verein( verein ) {} bool istErwachsen() const { return m_alter >= 18; } std::string Verein() const { return m_verein; } private: int m_alter; std::string m_verein; };und dann läuft man über alle Läufer (
), schaut nach, ob sie in einem Verein sind und speichert sich die Gebühren-Objekte pro Verein in einer std::map. Am Ende gibt man diese ausmap< std::string, Gebuehr > vereinsgebuehren; for( Laeufer* iLf = la; iLf != la + AnzLaeufer; ++iLf ) // besser: for( vector< Laeufer >::iterator iLf = la.begin(); iLf != la.end(); ++iLf ) { if( !iLf->Verein().empty() ) { vereinsgebuehren[iLf->Verein()].add( gebuehrberechnen( *iLf ) ); } } for( map< std::string, Gebuehr >::iterator i = vereinsgebuehren.begin(); i != vereinsgebuehren.end(); ++i ) { cout << "Verein: " << i->first << " Gebühr: " << i->second.Sum() << endl; }Gruß
Werner
-
Danke Werner für deine Hilfe. Es ist echt nett, dass mir wenigsten einer hilft. Es ist wirklich schwierig, C++ per selbst-studium sich anzueignen.
@akari naja, was soll man denn machen, wenn man auf einer FH studiert, wo kein c++ angeboten wird. Und man nur Java Unterricht bekommt. Ich kann mir das ja nicht aus den fingern saugen. Ich hab schon viele tutorials und skripte durchgelesen, aber wenn man die Lösung nicht findet, muss man sich anders helfen lassen.
Und noch was. Was heißt da, dass ich mir da ganze Lösungen von Aufgaben von anderen beantwortet lasse. Die Grundstruktur hab ich selbst programmiert. Und wenn man 5 % von der kompletten Aufgabe nicht weiß, dann muss man sich so helfen lassen. Fragen ist doch nicht verboten, dafür sind doch Foren da.
-
Martini123 schrieb:
..., muss man sich anders helfen lassen.
eine kreative umdeutung eines spruchs, der eigentlich ein *bisschen* anders geht... (da ist ein wort zu viel)