Struktur und Array in C++

sa.afina

Grünschnabel
Hi, ich hab folgende Aufgaben zu lösen: Ich soll ein Programm schreiben, mit einer Struktur, die Vorname, Nachname und Geburtsdatum(Tag, Monat, Jahr) enthält. Dann ein Array definieren mit drei solcher Strukturen. Die Stellen sollen vom Benutzer gefüllt werden und anschließend sollen alle Stellen mit einer Funktion ausgegeben werden.

Das ist jetzt erstmal ohne die Ausgabefunktion. Ich weiß da sind Fehler beim Array, aber ich weiß nicht so genau, wie ich es machen soll.
C++:
#include <iostream>
#include <string>
using namespace std;
struct person {
        string vorname;
string nachname;
int geburtstag;
int geburtsmonat;
        int geburtsjahr;
    };

int main ()
{
   int n;
   struct person arr[3];
   for (n=0; n<3; n++)
{
cout << "Bitte geben sie den Vornamen ein" << endl;
getline(cin, person[n].vorname);
cout << "bitte geben sie den Nachnamen ein" << endl;
getline (cin, person[n].nachname);
cout << "Bitte geben sie den Tag des Geburstdatums ein" << endl;
cin >> person[n].geburtstag;
cout << "Bitte geben sie den Monat des Geburtsdatums ein" << endl;
cin >> person[n].geburtsmonat;
cout << "Bitte geben sie das Jahr des Geburtsdatums ein" << endl;
       cin >> person[n].geburtjahr;
   }

   return 0;

}
Ich wäre echt dankbar für ein paar Korrekturen/Hilfestellungen.
Vielen Dank schonmal.
 
Zuletzt bearbeitet von einem Moderator:

sa.afina

Grünschnabel
Vielen Dank für die Antwort. Ist das jetzt so richtig mit dem Array? Oder muss ich da mit der Struktur was anders machen? Wird das was ich als Benutzer eingebe denn so überhaupt richtig gespeichert?
So richtig funktioniert das ganze noch nicht, wenn ich es teste. Ich weiß nur nicht warum....
Es ist auch schon bei der Eingabe. Ab dem zweiten Namen, kann ich aus irgendeinem Grund den Vornamen nicht mehr eingeben...

C++:
#include <iostream>
#include <string>
using namespace std;

struct person {
        string vorname;
string nachname;
int geburtstag;
int geburtsmonat;
        int geburtsjahr;
    };

int main ()
{
   int n;
   struct person arr[3];
   for (n=0; n<3; n++)
{

cout << "Bitte geben sie den Vornamen ein" << endl;
getline(cin, arr[n].vorname);
cout << "Bitte geben sie den Nachnamen ein" << endl;
getline (cin, arr[n].nachname);
cout << "Bitte geben sie den Tag des Geburstdatums ein" << endl;
cin >> arr[n].geburtstag;
cout << "Bitte geben sie den Monat des Geburtsdatums ein" << endl;
cin >> arr[n].geburtsmonat;
cout << "Bitte geben sie das Jahr des Geburtsdatums ein" << endl;
cin >> arr[n].geburtsjahr;
}

cout << arr[1].vorname << endl;
return 0;
 
Zuletzt bearbeitet von einem Moderator:

ikosaeder

Teekannen-Agnostiker
Wenn du das getline rausnimmst, dann gehts. Ich weiß zwar gerade nicht warum, aber es löst das Problem.
C++:
cout << "Bitte geben sie den Vornamen ein "<<endl; 
cin >> arr[n].vorname;
cout << "Bitte geben sie den Nachnamen ein" << endl;
cin >> arr[n].nachname;
 

sa.afina

Grünschnabel
Vielen Dank, ja so geht es jetzt auch. Den Rest, mit der Ausgabe schaffe ich denke ich allein.

Also scheint es so zu sein, dass man bei Arrays getline nicht benutzt? Ich dachte, dass man es bei der Eingabe von strings benutzen muss.

Wenn du das getline rausnimmst, dann gehts. Ich weiß zwar gerade nicht warum, aber es löst das Problem.
 

Neue Beiträge