/* 3. Gegeben sei die Datenstruktur Student mit Name, Vorname, BAföG, Geschlecht,
Geb.Tag (mit Tag, Monat und Jahr) und Anschrift (mit Ort, PLZ und Straße).
Formulieren Sie einen Typ entsprechend obiger Datenstruktur sowie eine Variable
für die n Studenten einer Seminargruppe!
Schreiben Sie ein menü-gesteuertes Programm, das geeignete Funktionen enthält
und testet, die
- 1 - einen neuen Studenten eintragen,
- 2 - alle Daten als Tabelle auflisten,
- 3 - den ältesten Studenten ermitteln,
- 4 - das mittlere Einkommen der Studenten ermitteln,
- * - für einen einzulesenden Namen das Einkommen ausgeben.
-----------------------------------------------------------------------------*/
#include <stdlib.h>
struct geb_typ
{ int tag, monat, jahr;
};
struct adr_typ
{  char ort[15], plz[6], str[20];
};
struct studi_typ
{  char name[10], vorname[10]; float baf; char geschl;
   struct geb_typ gebtag;
   struct adr_typ anschrift;
};
struct studi_typ lies() { struct studi_typ lokal;
  printf("\n Name: ");         scanf("%s", &lokal.name);
  printf(" aus: ");            scanf("%s", &lokal.anschrift.ort);
  printf(" geboren (Tag): "); scanf("%i", &lokal.gebtag.tag);
  printf(" Monat: ");         scanf("%i", &lokal.gebtag.monat);
  printf(" Jahr: ");          scanf("%i", &lokal.gebtag.jahr);
  lokal.baf= rand()/32.767;
  return lokal;
}
void zeig( int anz, struct studi_typ s[] )
{ int i;
  for( i=0; i<anz; i++)printf("\n %s, aus: %s, geb. %i.%i.%i, mit %.2f EUR ",
              s[i].name, s[i].anschrift.ort, s[i].gebtag.tag, s[i].gebtag.monat,
                                                    s[i].gebtag.jahr, s[i].baf);
  printf("\n");
}
void oldi( int anz, struct studi_typ s[] )
{ struct studi_typ lokal;  int i;    lokal=s[0];
  for( i=0; i<anz; i++)
  if( s[i].gebtag.jahr < lokal.gebtag.jahr) lokal=s[i];
  if( s[i].gebtag.jahr == lokal.gebtag.jahr)
    if( s[i].gebtag.monat < lokal.gebtag.monat) lokal=s[i];
  if( s[i].gebtag.jahr == lokal.gebtag.jahr)
    if( s[i].gebtag.monat == lokal.gebtag.monat)
      if( s[i].gebtag.tag < lokal.gebtag.tag) lokal=s[i];
  printf("\n Aeltester:  %s, aus: %s, geb. %i.%i.%i",
     lokal.name, lokal.anschrift.ort, lokal.gebtag.tag, lokal.gebtag.monat,
     lokal.gebtag.jahr);  printf("\n");
}
void einkommen( int anz, struct studi_typ s[] )
{ int i; struct studi_typ hilf;
  printf("\n Zu suchender Name: ");  scanf("%s", hilf.name);
  for( i=0; i<anz; i++) if( strcmp( s[i].name, hilf.name)==0)
                               printf("\n sein Einkommen=%.2f EUR\n", s[i].baf);
}
int main()
{ struct studi_typ mtk[100]; int menue, i=0;
  do{printf("\n - 1 - einen neuen Studenten eintragen,"
      "\n - 2 - alle Daten als Tabelle auflisten,"
      "\n - 3 - den aeltesten Studenten ermitteln,"
      "\n - 4 - das mittlere Einkommen der Studenten ermitteln,"
      "\n - 5 - fuer einen einzulesenden Namen das Einkommen ausgeben.     : ");
     scanf("%i", &menue);
     if( menue==1){ mtk[i]= lies(); i++; }
     if( menue==2){ zeig( i, mtk);       }
     if( menue==3){ oldi( i, mtk);       }
     if( menue==5) einkommen( i, mtk);
  }while( menue!=0);
  return 0;
}
