Struktur per Eingabe


Grüß Gott,

wir sollen eine Schulklasse Modellieren, dies aber ohne Klassen, sondern mit struct's und enum's.

So habe ich angefangen: (Datum und Art sind vorgegeben)

Code:
#include <iostream>

using namespace std

enum Monat {Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez};

struct Datum {

    int tag;

    Monat mon;

    int jahr;

};


enum Art {m,w};




struct Person {

    string name;

    Art geschlecht;

    Datum geburtsdatum;

};



/*       EINGABE EINER PERSON

 *

 * schulklasse->name = "lucy";

schulklasse[0].geschlecht = w;

schulklasse[0].geburtsdatum.tag = 14;

schulklasse[0].geburtsdatum.mon = Mai;

schulklasse[0].geburtsdatum.jahr = 1999;

 *

 * */

int main()

{

    const int max = 42;

    Person schulklasse[max];

       char art;

       cin >> art;

       schulklasse[0].geschlecht = art;

    return 0;

}
Manuell kann man Attribute so wie in den Kommentaren einfügen.

Jetzt soll als zweiter Teil die Eingabe einer Person über den Benutzer erfolgen.

Zahlen und den Namen könnte man so eingeben:

Code:
int index;
int eingabeJahr;
string eingabeName;

cin >> index >> eingabeJahr >> name;


schulklasse[index].name = eingabeName;

schulklasse[index].geburtsdatum.jahr = eingabeJahr;
Ich habe zwei Fragen:

1.) Wie kann ich die Art eingeben? (als enum krieg ich eine Fehlermeldung)

2.) Geht die Eingabe irgendwie effizienter)

Gruß,

Max
 

ikosaeder

Teekannen-Agnostiker
Ein Enum mapped einen String auf einen Int. Das heißt in deinem Programm ist m =0 und w = 1.
Wenn du jetzt einen Character einliest, dann weiß dein Programm nicht, ob das null oder 1 ist.
Wenn du art eingelesen hast als w oder m dann musst du mit if prüfen welchem Wert das entspricht.
C++:
if(art=='w' || art =='W')
{
      schulklasse[0].geschlecht=w;
}
else if(art=='m' || art =='M')
{
      schulklasse[0].geschlecht=m;
}
else
{
      std::cout<<"Bitte nur w oder m eingeben"<<std::endl;
}
 
Zuletzt bearbeitet: