Array



  • Meint ihr so?

    class person
    {
    private:
    string name;
    string vorname;
    int geburtsdatum;
    
    public:
    person (string name, string vorname, int geburtsadatum);
    ~person();
    };
    
    person::person(string n, string v, int g)
    {
    n=name;
    v=vorname;
    g=geburtsdatum;
    }
    
    int main ()
    {
    person personen [100]
    

    Ich bekomme da aber immer eine Fehlermeldung!
    Cannot find default constructor ti initialize array element of type person !!!!

    Gibts da irgendwo ein Programm als Beispiel?
    Irgendwie blicke ich nicht mehr durch! 😞



  • Hallo

    Wenn du ein array erstellen willst, brauchst du auch einen Standardc'tor. Also schreibe noch einen, der Parameter erwartet. Das nennt man dann überladen.

    chrische



  • Okay Danke!

    Bin jetzt schon weiter gekommen!

    Aber wie mache ich das jetzt mit dem Zeiger? Damit ich die Daten ins Array schreiben kann?

    Wo schreibe ich das jetzt hin?

    int wert[MAX];
    
      for(i=0; i<MAX; i++)
      {
          wert[i] = 0;
      }
    

    Bekomme jetzt die Fehlermeldung "Structure required on left side of. or. *"

    Danke schonmal im voraus!



  • Hallo

    Kannst du mal dazu sagen, wo du die Fehlermeldung bekommst und außerdem ist in deinem Abschnitt i nicht definiert (deklariert - ich verwechsele es immer)

    for(unsigned int i=0; i< MAX; ++i)
    

    wäre besser.

    chrische



  • Nydro schrieb:

    int wert[ MAX ];
    
    for( unsigned int i = 0; i < MAX; i++ ) {
    
        wert[ i ] = 0;
    }
    

    Bekomme jetzt die Fehlermeldung: "Structure required on left side of . or *"

    Entweder hab' ich ein Problem mit meinen Augen, oder in deinem Code ist wirklich weder ein '.' oder '*'...

    Greetz, Swordfish



  • Werde das Prog mal ausbessern!



  • mitarbeiter *testmitarbeiter = new mitarbeiter[ 500 ];
    

    Du legst hier ein Array von mitarbeiter an. Die *testmitarbeiter bekommt die Adresse des ersten neu erstellten mitarbeiters.

    Ein index beim zugriff auf testmitarbeiter wäre angebracht, denn wie soll dein Compiler wissem, welchen der 500 mitarbeiter du meinst? Also:

    testmitarbeiter[ irgendein_index ].name_eingabe(na);
    testmitarbeiter[ irgendein_index ].vorname_eingabe();
    testmitarbeiter[ irgendein_index ].urlaubs_anspruch();
    testmitarbeiter[ irgendein_index ].resturlaub_berechnung();
    

    achja, lösch bitte deine testmitarbeiter, wenn du sie nicht mehr benötigst:

    delete [] testmitarbeiter;
    

    Greetz, Swordfish


  • Mod

    #include <string.h>
    

    auch daran wirst du wenig freude haben, wenn du die std::string benutzen willst. der notwendige header dafür ist

    #include <string>
    

    achtung, verwechslungsgefahr: <string> ist nicht das 'moderne' gegenstück zu string.h, welches in C die funktionen für C-style strings enthält; dafür gibt es den header <cstring>



  • Frage!
    Wie Liste ich aller Personen auf?

    personen[i].ausgabe_daten();
    

    Es sind z.B. 5 Personen gespeicher!

    Und ich mmöchte, dass alle ausgegeben werden!

    Geht das irgendwie mit i--??

    Danke!



  • Hallo

    Benutz doch einfach eine Schleife:

    for(unsingned int i=0; i<5; ++i)
        personen[i].ausgabe_daten();
    

    chrische



  • geht das nicht anders?
    ich soll daten bis 500 anlegen können!
    Aber er soll mir nur die ausgeben, die auch vorhanden sind!

    z.B. mein i = 100 Einträge! Jetzt soll er mir die 100 ausgeben und nicht bis 500, da sie noch leer sind!



  • Hier mein Beispiel!

    switch(eingabe)
      {	  
        case 1:
        {
    	i++;
    	personen[i].eingabe_daten();
    	break;
            }
    	case 3:
    	{
    	cout<<"Bitte geben Sie den Index des Mitarbeiters ein!"<<endl;
    	cin>>index;
    	personen[index].ausgabe_daten();
            system("Pause");
    	break;
    	}
    	case 4:
            {       
    	{
    	personen[i].ausgabe_daten();
    	}
    	break;
    	}
    


  • Poste mal den komletten Sourcecode!

    Greetz, Swordfish



  • Benutz doch einfach eine vector, dann haste alle deine Probleme gelöst.



  • Leider kenne ich mich noch nicht so gut aus!

    Hier mein Prog!

    Die Auflistung aller Mitarbeiter funktioniert immer noch nicht! 😞

    Könntet ihr mir da mal weiterhelfen?

    Wie mache ich das mit dem Datum?

    Aufgabe:
    Jeder Mitarbeiter hat pro Jahr 30 Urlaubstage. Mitarbeiter, die zum 01.01, des laufenden Kalenderjahrs das 50 Lebensjahr vollendet haben, erhalten 32 Tage.

    Man kann es als struct machen, aber da kenn ich mich noch nicht so gut aus!

    Und wie lösche ich einen Mitarbeiter?

    delete Mitarbeiter []; ???

    Danke!


  • Mod

    wie ist denn Datum definiert?



  • Ganz normal z.B. 25.06.2006 !!


  • Mod

    class Mitarbeiter
    {
      private:
      string Name, Vorname; // Persoenliche Informationen
      int Urlaubstage;
      int Tage, Monate, Jahr;
      char Anspruch,j;  
      Datum Geburtsdatum; // Datum als struct     <============= hier
      //int Resturlaub; // Anzahl restlicher Urlaubstage
    

Anmelden zum Antworten