Struct



  • Hallo,

    bin relativ neu in C/C++ und versuche gerade ein kleines Programm (Tabelle für Fifa 11:) zu schreiben, in der ich eine struct brauch in der eine weitere struct ist.

    Dafür habe ich zunächst eine struct, die die Daten eines jeden Spielers erfassen soll, sieht wie folgt aus:

    struct spieler{

    char name[15];
    short tore;
    short vorlagen;
    };

    Jetzt habe ich eine weitere struct angelegt, die die Daten einer jeden Mannschaft erfassen soll, sieht wie folgt aus:

    struct mannschaft{

    struct spieler s_feld[15];
    short tore;
    short gegentore;
    short punkte;
    short siege;
    short unentschieden;
    short niederlagen;

    }a,b,c,d,e;

    Bin ich richtig der Annahme, dass durch sruct spieler s_feld[15]
    15 Variablen vom Typ struct spieler pro struct mannschaft angelegt werden?

    Wenn ich nun bspw. den ersten Spielernamen von Mannschaft a bearbeiten möchte,
    müsste das mit
    cin >> name.s_feld[0].a;
    klappen, oder nicht?

    Ich brings leider nicht zum Laufen und seh meinen Fehler nicht. Freue mich über jede Hilfe. Danke schonmal im vorraus.


  • Mod

    cin >> name.s_feld[0].a;

    Umgekehrt: a.s_feld[0].name

    bin relativ neu in C/C++

    Und du hast tatsächlich C/C++ gelernt hast, was nicht gut für dich ist, weil du nun sowohl C als auch C++ nicht richtig kannst.



  • Wohl eher mit

    mannschaft schalke;
    cin >> schalke.s_feld[0].name;
    

    Aber warum nutzt du kein std::string/std::vector?

    Edit:
    Der war schon wieder schneller, verdammt! 🙂



  • wenn du das hier hast:

    struct foo
    {
        int a;
        int b;
    };
    

    erzeust du eine variable so:

    foo beispiel; // ohne struct
    


  • SeppJ schrieb:

    Und du hast tatsächlich C/C++ gelernt hast, was nicht gut für dich ist, weil du nun sowohl C als auch C++ nicht richtig kannst.

    Ich lern's auch noch nicht richtig, gehe noch zur Schule und bedien mich bisher nur an alten Skripten von meinem Bruder und einem, meiner Ansicht nach schlechtem Buch.

    Danke für die Hilfe, bisschen peinlich, dass mir nicht die falsche Reihenfolge aufgefallen ist:D

    std::string bzw vector kannte ich noch nicht, gerade bisschen was drüber gelesen, scheint die Sache sehr zu vereinfachen.

    Wie würde es dann aber konkret aussehen?



  • Statt

    struct spieler{ 
    
    char name[15]; 
    short tore; 
    short vorlagen; 
    }; 
    struct mannschaft{ 
    
    struct spieler s_feld[15]; 
    short tore; 
    short gegentore; 
    short punkte; 
    short siege; 
    short unentschieden; 
    short niederlagen; 
    
    }a,b,c,d,e;
    

    einfach

    struct spieler{ 
    std::string Name;          //Kein Char-Array mehr
    short tore; 
    short vorlagen; 
    }; 
    struct mannschaft{ 
    std::vecor<spieler> leute; //Oder std::array wenn du einen C++0x-Fähigen Compiler hast
    short tore; 
    short gegentore; 
    short punkte; 
    short siege; 
    short unentschieden; 
    short niederlagen; 
    }a,b,c,d,e;
    


  • Vielen Dank!
    Wie könnte ich jetzt durch die verschiedenen "leute" durchiterieren?



  • @josefh
    Genau so, wie du durch jedes Array oder vector durchiterierst.

    @EOutOfResources
    std::vector ist schon gut. Bei std::array müsstest du eine feste Grösse angeben (ist ja nur ein Wrapper für native Arrays).



  • drakon schrieb:

    std::vector ist schon gut.

    Wenn es ja eh immer nur 15 Spieler sind, finde ich std::array besser.



  • EOutOfResources schrieb:

    drakon schrieb:

    std::vector ist schon gut.

    Wenn es ja eh immer nur 15 Spieler sind, finde ich std::array besser.

    Das ist imo eine unnötige Einschränkung. Eine Mannschaft hat nicht immer exakt 15 Spieler und sollte daher sollte die Struktur das auch so repräsentieren.



  • drakon schrieb:

    Eine Mannschaft hat nicht immer exakt 15 Spieler

    Sieh seinen Code an!



  • EOutOfResources schrieb:

    drakon schrieb:

    Eine Mannschaft hat nicht immer exakt 15 Spieler

    Sieh seinen Code an!

    🙄
    Nur weil er das mal in seinem Code so hat macht es das gut? Er hat auch eine Einschränkung, dass Spieler lediglich einen Namen haben dürfen, der 14 Zeichen lang ist, was auch keine gute Idee ist das so statisch zu machen.


Anmelden zum Antworten