Mehrere Felder zur Laufzeit erzeugen
-
Hallo liebe C++-Programmierer. Ich habe folgende Programmieraufgabe bekommen: Wir sollen eine bestimmte Anzahl an Fußballvereinen nach Punkten, Toren und zuletzt nach Namen sortieren.
Dazu will ich zur Laufzeit für jeden eingegebenen Verein ein 1-zeiliges Feld erzeugen. Leider wird auch erst zur Laufzeit bekannt, wieviele Felder ich erzeugen will. Kann mir da jemand helfen?
Ich habe schon hier im Forum gesucht und auch über google. Leider habe ich nicht das gefunden, was ich wollte.Wäre ganz toll, wenn mir jemand von euch helfen könnte.
Danke schonmal im Voraus.
-
Hallo
kann es sein, das du vom Borland C++ Builder sprichst? Dann schau mal in die BCB_FAq hier im Forum, im Abschnitt Komponenten benutzen den Thread dynamische Arrays von Komponenten
bis bald
akari
-
Danke dir erstmal.
Leider ist das nicht das richtige. Ich programmiere mit DevCpp. Also eher ANSI C. Keine Ahnung, ob man es dort so ähnlich machen kann wie bei dem Programm von Borland. Aber ich habe ja keinen WYSIWYG-Editor in dem ich einfach OnButtonClick definieren kann.
Die *.exe-Dateien die ich erzeuge sind auch keine Dateien mit Buttons sondern DosBox-Anwendungen.
Das aus den FAQs geht schon sehr weit in die richtige Richtung nur leider weiß ih nicht wie ich es ins ANSI C implementieren soll.Ich hoffe jemand kann mir damit weiterhelfen.
-
Wenn du wirklich Ansi C schreibst, bist du hier falsch (trotzdem ein Tip: malloc()/free() werden zum Anlegen von dynamischen Feldern genutzt).
Ich gehe aber eher davon aus, daß du C++ nutzt (schon vom Namen des Compilers her) - und dort würde ich am ehesten einen STL-Container verwenden (für dein Problem vorzugsweise vector oder deque).
-
dummbrot schrieb:
Wir sollen eine bestimmte Anzahl an Fußballvereinen nach Punkten, Toren und zuletzt nach Namen sortieren.
Dazu will ich zur Laufzeit für jeden eingegebenen Verein ein 1-zeiliges Feld erzeugen. Leider wird auch erst zur Laufzeit bekannt, wieviele Felder ich erzeugen will.Besser Du denkst Dir für alle Vereine eine Struktur aus, in der Du die Daten genau eines Vereins ablegen kannst. Zum Beispiel:
struct Verein { std::string m_name; int m_punkte; int m_tore; };Diese packst Du in einen Vector; also:
std::vector< Verein > vereine; vereine.push_back( .. ); // neuen Verein hinzufügenWenn Du jetzt noch eine Vergleichsfunktion spendierst
// liefert 'true', falls Verein a vor Verein b kommt // d.h. der Beste steht am Anfang bool isBetter( const Verein& a, const Verein& b ) { // erst nach Punkten if( a.m_punkte > b.m_punkte ) return true; if( a.m_punkte == b.m_punkte ) { // dann nach Toren if( a.m_tore > b.m_tore ) return true; if( a.m_tore == b.m_tore ) return a.m_name < b.m_name; // alphabetische Reihenfolge } return false; }.. und dann kannst Du's sortieren
std::sort( vereine.begin(), vereine.end(), &isBetter );Der nächste Schritt wäre ein Konstruktor für Vereine, die Member private machen und isBetter wird friend von Verein.
Gruß
Werner
-
Wow. Herr Salomon, hiermit erkläre ich Sie zu meinem persönlichen Helden. Das ist so ziemlich genau das, was ich gesucht und mir erhofft hatte. Vielen Dank dafür, damit werde ich es bestimmt schaffen. Falls noch weitere Probleme auftreten, werde ich mich melden.
Dankeschön!
PS: Ich finde es ganz toll, dass man in diesem Forum ohne einen langwierige Anmelde-Prozess Beiträge schreiben kann. Bitte unbedingt beibehalten, solange es nicht durch Spammer unmöglich gemacht wird.