Q:
Nachfolgend angegebener Code fragt in einer Schleife fortlaufend Studierende ab, bis der Benutzer abbricht. Der Code speichert jedoch nur den zuletzt eingegebenen Datensatz. Verändern Sie den Code so, dass er eine Liste von Studierenden abspeichert und diese Liste anschließend ausgibt.
- Legen Sie ein Feld an, das 700 Elemente vom Typ struct Student aufnehmen kann
- Speichern Sie alle vom Benutzer eingegebenen Datensätze (Daten eines Studierenden) fortlaufend in diesem Feld ab
- Erweitern Sie die letzte printf-Anweisung um Code, der in einer Schleife alle eingegebenen Studierenden wieder tabellarisch ausgibt. Die Formatzeichenkette dieser printf-Anweisung soll dabei unverändert bleiben.
A:
#include <stdio.h>
int main()
{
// Datentyp für alle Daten zu einem Studenten (Datensatz)
struct Student
{
char nachname[21];
int termin; // Nummer der Tutorübung (1-8)
};
//Variable, die die Daten zu einem Studenten (Datensatz) speichert
// (Vom Datentyp struct Student)
struct Student stud;
char antwort = 0; // Zum Speichern einer j/n- (Ja/Nein-) Antwort
do
{
// Daten des Studenten einlesen und überprüfen
printf("Nachname: ");
scanf("%20s", stud.nachname);
printf("Terminnummer der Tutorübung: ");
scanf("%i", &stud.termin);
if (stud.termin < 1 || stud.termin > 8)
{
printf("Bitte wählen Sie eine Terminnummer zwischen 1 und 8.\n");
return 1;
}
printf("Wollen Sie einen weiteren Studenten eingeben (j/n): ");
scanf(" %c", &antwort);
} while (antwort != 'n' && antwort != 'N');
printf("\n\nListe:\n");
printf("------\n\n");
printf("Albers | 1\nBruns | 2\nCaesar | 3\nDidgereit | 4\nErem | 5\nFudickar | 6\nGraubart | 7\n");
printf("%-20s | %i\n", stud.nachname, stud.termin);
}