Hilfe bei C++ Studienarbeit
-
Nur mal so beim überfliegen:
Mal ne frage...du willst dass man die vereinszugehörigkeit eingibt
ABER dies ist eine bool variable..nimmt also nur zwei werte an...
also kann das schon nicht funktionieren...
mach nen string draus oder nen int und es passt...
-
Hallo darthdespotism,
ich soll ein crosslauf organisieren.
Das Programm soll folgendes leisten:
· Eingabe der Teilnehmerdaten (vorname, nachname, usw...)
· Auflistung der Teilnehmer
· Berechnung der Startgebühren je Läufer, bzw. bei Vereinsangehörigen je Verein
· Nach Durchführung des Laufes: Eingabe der Laufzeit für jeden Teilnehmer
· Anzeigen der Ergebnisse je KategorieIch bin aktuell immer noch beim 1. Punkt. Wenn man mein programm startet, ist es noch möglich die pers. Daten einzugeben. (es wird die methode anlegen aufgerufen), sobald ich aber die vereinzugehörigkeit variable = vereinzug eingebe, dann kommt die endlosschleife.
vereinzug ist eine boolean variable.
-
1. es heißt int main - aber das nur nebenbei
2. wenn läufter schon einen konstruktor hat, warum dann nochmal zusätzlich eine funktion "anlegen"? genau dafür ist der doch da
du legst am anfang schon ein array von 500 läufern an. verwende lieber einen container dafür und lege läufer tatsächlich nur dann an, wenn du sie auch brauchst.
z.b.
//in main solltest du dir überlegen, ob du dieses riesige switch-case konstrukt wirklich willst. list<Laeufer> la; //... case 1: la.push_back(create_laeufer()); //... Laeufer* create_laeufer () { cout << "Bitte geben Sie den Nachnamen ein" << endl; string nachname; cin >> nachname; //... return new Laeufer (nachname, vorname, ...); }die klassendefinition in einen eigenen header ist nicht notwendig (v.a. weil du ja jetzt nicht unendlich viel code hast - und im ergebnis ist es das gleiche).
für den konstruktor gibt es elementinitialisierungslisten
class foo int a, b, c; public: foo (int &a_, int &b_, int &c_) : a(a_), b(b_), c(c_) {}das problem mit der eingabe war schon öfters mal da. such mal nach cin und clear.
-
#if !defined (WALKER_H__INCLUDED) #define WALKER_H__INCLUDED #include <string> class walker { public: walker(const std::string& lastname, const std::string& prename, const unsigned short age, const char sex, const bool club_member) : m_lastname(lastname), m_prename(prename), m_age(age), m_sex(sex), m_member(club_member), m_time(0.0) { } public: void set_start_pos(const unsigned int pos) { m_startpos = pos; } unsigned int get_start_pos() const { return m_startpos; } private: unsigned int m_startpos; std::string m_lastname; std::string m_prename; unsigned short m_age; char m_sex; double m_time; bool m_member; std::string m_club; }; #endif // WALKER_H__INCLUDED... muss noch um nen paar getter/setter erweitert werden!
#include <iostream> unsigned short handle_menu(); template<typename t> t read_type(std::string const &prompt) { t result; std::istringstream isstr; std::string line; do { std::cout << prompt << std::flush; std::getline(std::cin, line); isstr.clear(); isstr.str(line); isstr >> result; } while(!isstr); return result; } int main() { std::cout << "Crosslaufverwaltung V0.1BETA" << std::endl; std::vector<walker> walkers; unsigned short sel = 0; while ((sel = handle_menu()) != 6) { switch (sel) { case 1: { std::cout << "Vorname: " << std::flush; std::string prename; std::getline(std::cin, prename); std::cout << "Nachname: " << std::flush; std::string lastname; std::getline(std::cin, lastname); unsigned short age = read_type<unsigned short>("Alter: "); walkers.push_back(walker(lastname, prename, age, 'm', true)); walkers[walkers.size() - 1].set_start_pos(read_type<unsigned int>("Startposition: ")); }break; } } } unsigned short handle_menu() { std::cout << "Kontoverwaltung: " << std::endl; std::cout << "(1) Laeufer anlegen" << std::endl; std::cout << "(2) Liste der Laeufer" << std::endl; std::cout << "(3) Berchnung der Startgebuehr" << std::endl; std::cout << "(4) Ergebnisseeingabe" << std::endl; std::cout << "(5) Anzeige der Ergebnisse" << std::endl; std::cout << "(6) Programm beenden" << std::endl; return read_type<unsigned short>("Auswahl: "); }...
-
das Problem ist, dass ein Läufer ohne Verein starten kann oder eben mit Vereinzugehörigkeit.
Jetzt bin ich so vor gegangen, erstmal die Vereinszugehörigkeit zu prüfen und wenn mit true bestätigt wird, soll der Verein eingegeben werden.In der Aufgabe steht, wenn ein Verein mit mindestens 3 Läufern startet wird der Startgebühr reduziert.
Das Programm ist noch lange nicht fertig, bloß ich muss erstmal mit Eingabe der persönlichen Daten starten. Bloß warum führt der compiler eine endlosschleife aus?
-
Ich danke euch, ich werd das mal durchdenken.
-
Naja wnen du meinen Post überliest dann weißt du nicht wieso er ne endlosschleife drausmacht
also nochmal
vereinzugehörigkeit ist eine bool variable..nimmt also nur zwei werte an...
also kann das schon nicht funktionieren...
mach nen string draus oder nen int und es passt...
-
Alles klar Kuldren, danke es funktioniert.
Nur von der Logik ist es mir nicht klar, wenn ich die bool-variable lasse
und true oder false eingebe, müsste es doch normalerweise auch gehen, oder?
-
Schon mal probiert statt "true" und "false" einfach "1" und "0" einzugeben...
-
Guck dir mal den Ansatz an, wie ich ihn gemacht hab. Ist eigentlich nen bissel einfachser sogar noch.
-
Wird bei mir ein bisschen dauern, bis ich das richtig verstanden hab.

Danke nochmal für die Hilfe, ihr habt mir sehr geholfen.Schöne Grüße