Datenorganisation, structs, arrays....



  • jede gruppe könnte ein objekt sein.
    in diesem objekt gibt es dann die personen-objekte.
    die personenklasse könnte dann ungefähr so aussehen:

    class Person
    {
        private:
            char name[21];
            int punkte;
            int rang;
        public:
            void SetRang(int r) { rang = r; }
            int  GetPunkte() { return punkte; }
    };
    

    mit den methoden kannst du dann von jeder person den punktestand erfragen und entsprechend ihr einen rang zuweisen.
    wie du die personen ordnest, ist ein anderes problem. dazu müsste in der FAQ genügend stehen.

    in c++ sollte möglichst alles in objekten sein!



  • Die structs waren in C. in C++ gibt es nur noch objects. Damit lässt sich viel mehr machen und aber auch das gleiche wie mit structs.
    In einem Objekt kannst du auch die Daten name und nr zusammenfassen und dann in der main oder sonstwo mehrere Instanzen von dem Objekt anlegen.

    Quark.

    struct ist beinahe synonym zu class zu gebrauchen. Es sind nur alle Elemente standardmäßig öffentlich und es wird auch standardmäßig öffentlich geerbt.
    Meißt wrd struct beim beschreiben von PODs und Funktoren eingesetzt.

    die personenklasse könnte dann ungefähr so aussehen:

    statt char[21] würde ich dann doch zu std::string raten, da der Fragesteller doch mit char-Zeigern und -Feldern Probleme zu haben scheint. Dann fehlt in deinem Beispiel irgendwie ein vernüpftiger C'tor.
    Außerdem solltest du vielleicht auch einen passenden kleiner als Operator definieren, da die Daten ja sortiert werden sollen.

    bool operator < (Person const & lhs, Person const & rhs)
    {
       return lhs.getRang() < rhs.getRang();
    }
    

    Anosnten:

    vector<set<Person> > personenliste;
    

    So hast du eine Liste, in die du deine Gruppen Packen kannst. Jede Gruppe ist als set definert, also in aufsteigender Reihenfolge sortiert.



  • Helium schrieb:

    Die structs waren in C. in C++ gibt es nur noch objects. Damit lässt sich viel mehr machen und aber auch das gleiche wie mit structs.
    In einem Objekt kannst du auch die Daten name und nr zusammenfassen und dann in der main oder sonstwo mehrere Instanzen von dem Objekt anlegen.

    Quark.

    struct ist beinahe synonym zu class zu gebrauchen. Es sind nur alle Elemente standardmäßig öffentlich und es wird auch standardmäßig öffentlich geerbt.
    Meißt wrd struct beim beschreiben von PODs und Funktoren eingesetzt.

    das sagte er doch, in c++ wird nichmehr großartig zwischen strukturen und klassen unterschieden->objekt



  • Er sagt:

    Die structs waren in C. [...] Damit lässt sich viel mehr machen [...] wie mit structs.

    Mal davon abgesehen, was es als und nicht wie heißt ist die Aussage Quatsch.



  • Helium schrieb:

    Mal davon abgesehen, was es als und nicht wie heißt ist die Aussage Quatsch.

    Bei ersterem muss ich dir zustimmen. Kann mal passieren.
    Aber warum kann man mit Strukturen mehr machen als mit Klassen? 😕



  • Aber warum kann man mit Strukturen mehr machen als mit Klassen?

    Kann man nicht. Aber man kann mit Klasse auch nicht mehr machen, als mit Strukturen. Die Möglichkeiten sind exakt die selben.



  • Member-Methoden?
    Vererbung?



  • Praktikant schrieb:

    Member-Methoden?
    Vererbung?

    was soll damit sein? du kannst jeder Klasse das wörtchen class durch struct ersetzen und der Compiler wird sich nicht beschweren



  • schon, aber nur wenn in der class keine Methoden drinstehen.



  • Praktikant schrieb:

    schon, aber nur wenn in der class keine Methoden drinstehen.

    Dann ist folgender Code nicht legal?

    template<typename T>
    struct Foo
    {
    private:
      T t;
    public:
      virtual void foo() const = 0;
    };
    

    😕



  • von templates und virtuellen methoden habe ich leider noch keine ahnung. aber schon erschreckend, was der visual c++ compiler alles zulässt!

    #include <iostream>
    using namespace std;
    
    struct Foo 
    { 
    	private: 
    		int t; 
    	public: 
    		void foo() { t = 0; }
    		int getT() { return t; }
    };
    
    int main()
    {
    	Foo f;
    	f.foo();
    	cout << f.getT() << endl;
    
    	int i;
    	cin >> i;
    	return 0;
    }
    

    ich dachte, das geht nicht mit structs. so kann man sich täuschen.
    bzw: vertraue nie dem, was dir professoren sagen! 😉



  • Structs sind in C++ wie Klassen, nur das ihr Default public ist,
    bei Klassen ist dies private.

    Devil



  • Praktikant schrieb:

    bzw: vertraue nie dem, was dir professoren sagen! 😉

    btw: vertraue dem, was dir Helium sagt! 😉



  • Danke 🙂


Anmelden zum Antworten