005
03.02.2004, 10:22 Uhr
(un)wissender
Niveauwart
|
Da ich mich eh schon nicht an die Regeln gehalten haben, hier nochmal Code. Wenn du es in der Datei anders formatiert haben willst, oder nicht alles auf einmal einlesen möchtest, dann muss du das ändern. Evtl. Datei auslesen, in Vector packen, dann einlesen lassen (Konsole), dann sort. Ach ja, auf Fehler solltest du auch prüfen (im Stream, bei den Eingaben, etc.)
| C++: |
#include <iostream> #include <algorithm> #include <fstream> #include <vector> #include <string> using namespace std;
class HighscoreList { public: HighscoreList(int size); friend istream& operator>>(istream &in, HighscoreList &list); friend ostream& operator<<(ostream &out, const HighscoreList &list); void sort(); private: struct value { string name; int gewinnsumme; }; struct my_sort { bool operator()(const value &one, const value &two) { return one.gewinnsumme < two.gewinnsumme; } }; vector <value> vec; };
HighscoreList::HighscoreList(int size) : vec(size) {}
istream& operator>>(istream &in, HighscoreList &list) { const int SIZE = list.vec.size(); for(int i = 0; i < SIZE; ++i) { cout << "Eintrag " << i << "\n"; cout << "Bitte Namen eingeben:"; in >> list.vec[i].name; cout << "Bitte Gewinnsumme eingeben:"; in >> list.vec[i].gewinnsumme; cout << endl; } return in; }
ostream& operator<<(ostream &out, const HighscoreList &list) { const int SIZE = list.vec.size(); for(int i = 0; i < SIZE; ++i) { out << "Eintrag " << i; out << "\nName: " << list.vec[i].name; out << "\nGewinnsumme: " << list.vec[i].gewinnsumme; out << "\n" << endl; } return out; }
void HighscoreList::sort() { //Nur vertauschen, wenn notwendig! ::stable_sort(vec.begin(), vec.end(), HighscoreList::my_sort()); }
int main() { const int HIGH_SCORE_SIZE = 5; HighscoreList l = HIGH_SCORE_SIZE; cout << "\nEingabe\n\n"; //Von Konsole lesen cin >> l; l.sort(); //Hier deinen Dateinamen. string filename = "test.txt"; cout << "\nAusgabe in: " << filename.c_str() << "\n\n"; ofstream out(filename.c_str()); //In Datei schreiben out << l; return 0; }
|
-- Wer früher stirbt ist länger tot. |