Ergebnis 1 bis 6 von 6

Thema: Array beschreiben und auslesen

  1. #1
    HTML Newbie
    Registriert seit
    09.11.2008
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Array beschreiben und auslesen

    Hallo liebe Forengemeinde,

    vllt finde ich bei euch die benötigte Idee mein Problem umzusetzen, bisher erhalte ich nur mir unverständliche Fehler bei VS2008. Folgendes Problem ich möchte in ein Array einen neuen Spieler eintragen lassen und mir dieses Array dann wiederum auf der Konsole ausgeben lassen, nur steh ich bei der Methodenprogrammierung etwas auf dem Schlauch. Vielen Dank für eure Mühe im Vorraus.

    Problemmethoden in CKader.cpp kommentiert:

    Code:
    // Kader.cpp
    
    #include "CKader.h"
    #include "CSpieler.h"
    #include <iostream>
    
    using namespace std;
    
        // Konstruktor
        CKader::CKader(char* vorname, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht, unsigned int nummer, char* verein, unsigned int seit, E_POSITION position)
        {
            
        }
        // Destruktor
        ~CKader::CKader()
        {
            delete spielerArray[i];
        }
    
        // Methoden
         bool CKader::AddSpieler() 
        {
            for(i = 0; i < cMaxSpieler; i++)
          {
              //Array Spieler hinzufügen
              spielerArray[i]= new CSpieler();
          }
        return true;
        }
        bool CKader::PrintKader()
        {
            for (int i = 0; i < cMaxSpieler; i++)
        {
            // Array auf Bildschirm ausgeben
            spielerArray[i]->CSpieler::Print();
        }
        return true;
        }
    Code:
    // CKader.h
    
    const int cMaxSpieler = 50;
    int i;
    
    class CKader {
    
    public: 
    
        enum E_POSITION {Torwart, Abwehr, Mittelfeld, Sturm, Ersatzbank};
        int *spielerArray[];
    
        //Konstruktor 
        CKader(char* vorname, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht, unsigned int nummer, char* verein, unsigned int seit, E_POSITION position); 
        ~CKader();
    
        //Methoden
        bool AddSpieler();;
        bool PrintKader();
    };
    Code:
    // CSpieler.h
    
    const int cMaxStrLength = 50;    
    
    class CSpieler {        
    
    public:
            char vorname[cMaxStrLength];
            char nachname[cMaxStrLength];
            char geboren[cMaxStrLength];
    
            unsigned int groesse_cm;
            unsigned int gewicht_kg;
    
            unsigned int aktNummer;
            char aktVerein[cMaxStrLength];
            unsigned int aktVereinSeit_jahr;
    
            enum E_POSITION 
            {
                Torwart, Abwehr, Mittelfeld, Sturm, Ersatzbank
            };
            E_POSITION aktPosition;
    
            //Konstruktor 
            CSpieler(char* vorname, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht);
            ~CSpieler();
    
            //Methoden
            bool SetNummer(unsigned int nummer);
            bool SetVerein(char* verein, unsigned int seit);
            bool SetPosition(E_POSITION position);
            bool Print();
    };
    Code:
    // CSpieler.cpp
    
    #include "CSpieler.h"
    #include <iostream>
    
    using namespace std;
    
    //Konstruktor
        CSpieler::CSpieler(char* vorname, char* nachname, char* geboren, unsigned int groesse, unsigned int gewicht)
        {
            strcpy(this->vorname, vorname);        
            strcpy(this->nachname, nachname);    
            strcpy(this->geboren, geboren);        
            this->groesse_cm = groesse;            
            this->gewicht_kg = gewicht;
            this->aktNummer = 00;
            strcpy(this->aktVerein, "Kein Verein");
            this->aktVereinSeit_jahr = 0001;
            this->aktPosition = Ersatzbank;
        }
    
        //Methoden
        bool CSpieler::SetNummer(unsigned int nummer) {  this->aktNummer = nummer; return true; }
        bool CSpieler::SetVerein(char *verein, unsigned int seit){ strcpy(this->aktVerein, verein);    this->aktVereinSeit_jahr = seit; return true; }
        bool CSpieler::SetPosition(E_POSITION position) {  this->aktPosition = position; return true; } 
        bool CSpieler::Print()
        {
            cout << "Spieler Vorname: " << vorname << "\n" << endl;    
            cout << "Spieler Nachname: " << nachname << "\n" << endl;
            cout << "Spieler wurde geboren am: " << geboren << "\n" << endl;
            cout << "Spieler Groesse in cm: " << groesse_cm << "\n" << endl;
            cout << "Spieler Gewicht in kg: " << gewicht_kg << "\n" << endl;
            cout << "Spielernummer: " << aktNummer << "\n" << endl;
            if (CSpieler::aktPosition == Torwart) { cout << "Position: " << "Torwart\n" << endl; }
            else if (CSpieler::aktPosition == Abwehr) { cout << "Position: " << "Abwehr\n" << endl; }
            else if (CSpieler::aktPosition == Mittelfeld) { cout << "Position: " << "Mittelfeld\n" << endl; }
            else if (CSpieler::aktPosition == Sturm) { cout << "Position: " << "Sturm\n" << endl; }
            else if (CSpieler::aktPosition == Ersatzbank) { cout << "Position: " << "Ersatzbank\n" << endl; }
            cout << "Spielt seit Jahr: " << aktVereinSeit_jahr << " im Verein: " << aktVerein << "\n" << endl; 
            return true; 
        }
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Array beschreiben und auslesen

    Hmm, warum hat der Kader ein Gewicht, ein Geburtsdatum usw.??
    Also ich würde als erstes darauf verzichten, arrays aus Pointern zu verwenden, vorallem müssten es Pointer auf CSpieler und nicht auf int sein.
    Benutz doch einen vector:
    In der Klasse:
    Code:
    vector<CSpieler> spielerArray;
    Du kannst einen Vektor beliebig lang machen mit push_back:
    Code:
    void CKader::AddSpieler() // void ist sinnvoll ;)
        {
            for(i = 0; i < cMaxSpieler; i++)
          {
              spielerArray.push_back(CSpieler());
          }
        }
    Einfacher wäre es im Konstruktor:
    Code:
    CKader::CKader() : spielerArray(cMaxSpieler)
    {
    
    }
    Habe mir die Freiheit genommen, die Position und das Gewicht etc. zu entfernen, kannst du natürlich auch wieder einbauen.
    Anstelle von char*, bzw char[] solltest du strings benutzen:
    Code:
    string vorname, nachname, geboren, aktVerein;
    Du solltest das keins Falls vergessen:
    Code:
    #include <vector>
    #include <string>
    Bool Rückgaben sind ziemlich blödsinnig, wenn es sowieso immer true ist, benutze lieber void als Rückgabewert und spar dir das return true;.
    Das mit dem Print ist eigentlich okay, es gibt allerdings noch eine praktischere Variante:
    Code:
    ostream& operator<<(ostream& out, CSpieler s)
    {
            out << "Spieler Vorname: " << s.vorname << endl; // Das endl sorgt schon für einen Zeilenumbruch!    
            out << "Spieler Nachname: " << s.nachname << endl;
            out << "Spieler wurde geboren am: " << s.geboren << endl;
            out << "Spieler Groesse in cm: " << s.groesse_cm << endl;
            out << "Spieler Gewicht in kg: " << s.gewicht_kg << endl;
            out << "Spielernummer: " << s.aktNummer << endl;
            if (CSpieler::aktPosition == Torwart) { out << "Position: " << "Torwart" << endl; }
            else if (CSpieler::aktPosition == Abwehr) { out << "Position: " << "Abwehr" << endl;
            else if (CSpieler::aktPosition == Mittelfeld) { out << "Position: " << "Mittelfeld" << endl; }
            else if (CSpieler::aktPosition == Sturm) { out << "Position: " << "Sturm" << endl; }
            else if (CSpieler::aktPosition == Ersatzbank) { out << "Position: " << "Ersatzbank" << endl; }
            out << "Spielt seit Jahr: " << aktVereinSeit_jahr << " im Verein: " << aktVerein << endl; 
            return out;
    }
    Die hat einen praktischen Vorteil: Du kannst nun direkt cout << spieler aufrufen.
    Durch den Aufruf von cout << spieler wird diese Funktion dann mit cout als Parameter out aufgerufen, in das cout werden dann die Ausgaben geschrieben.
    Eine Zeile musst du dann allerdings in die Klasse CSpieler einfügen:
    Code:
    friend ostream& operator<<(ostream&, CSpieler);
    Das bewirkt, dass die Ausgabe-Funktion auf die privaten Elemente zugreifen darf.
    Noch ein Denkanstoß:
    Soll aktVerein wirklich nur eine Zeichenkette sein, oder lieber ein Zeiger auf einen Verein (ist CKader ein Verein, muss da eben stehen CKader* aktVerein, bei CVerein eben entsprechendes...).

    Es ist sehr schön, dass du die tolle Objektorientierung aus C++ verwendest, allerdings nimm es als allgeminen Ratschlag, in nicht Hardware-nahen Sachen, auf char*, arrays und übermäßig viele Pointer zu verzichten. Das bringt nur Probleme mit sich, Alternativen sind eben strings und vectoren.

    Viele liebe Grüße
    The User

    PS:
    Schonmal code::Blocks probiert?

  3. #3
    Unregistriert
    Gast

    Standard AW: Array beschreiben und auslesen

    Erstmal danke schön und es hat geholfen. Leider verlangt es meine diese unnützen Bool-Rückgaben zu verwenden, da ich sie auch nicht für sehr sinnig halte. Zum Thema Objektorientierung, ich komme aus der Javaecke ;D

  4. #4
    HTML Newbie
    Themenstarter

    Registriert seit
    09.11.2008
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Array beschreiben und auslesen

    Beitrag oben von mir und code::Blocks werd ich mal antesten. Danke

  5. #5
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Array beschreiben und auslesen

    Wer ist denn "meine"??
    Also false würde ich vielleicht zurückgeben, wenn ein Fehlerfall halbwegs wahrscheinlich ist, z. B. wenn man eine Datei einlesen möchte und die Datei nicht existiert oder so. Aber wenn das wirklich eine Ausnahme ist, würde ich auch zur Ausnahmenbehandlung greifen. Die kommen ja von C++, übrigens kannst du in C++ alle Datentypen werfern, sie müssen nicht throwable sein, das throws kann man sich auch sparen, möchte man es dennoch haben, geht es so:
    Code:
    void fehlerAnfaelligeFunktion() : throw(exception, runtime_error, bool, my_exception);
    Ich komme von C++ und benutze ab und an Java, du wirst bestimmt auch noch tolle Sachen in C++ kennenlernen, die in Java nicht gehen.

  6. #6
    HTML Newbie
    Themenstarter

    Registriert seit
    09.11.2008
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Array beschreiben und auslesen

    Ahh Text vergessen. Mit meine, meinte ich meinen Prof.

Ähnliche Themen

  1. DEUTSCH: Schilderung (Lebensräume beschreiben)
    Von HoneyGirl im Forum Off Topic und Quasselbox
    Antworten: 3
    Letzter Beitrag: 19.09.2007, 18:01
  2. array aus text auslesen bzw schreiben.
    Von doper im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 20.10.2006, 16:03
  3. Array
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 20.02.2006, 19:48
  4. datei beschreiben ---> immer andere datei
    Von Fabian im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 02.02.2005, 16:21
  5. PHP Array auslesen+vergleichen!
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 10
    Letzter Beitrag: 02.02.2005, 12:06

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •