Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Studentendatenbank/Musterlösung

< C-Kurs‎ | Studentendatenbank
Version vom 19. September 2009, 13:14 Uhr von Alexander Kührmann (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== Musterlösung === <pre> #include <stdlib.h> #include <stdio.h> #include <string.h> #define ANZAHL 10 Teil a: struct student { int mat_nr; char vorna...“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Musterlösung

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define ANZAHL 10

/* Teil a */
struct student {
	int mat_nr;
	char vorname[25];
	char nachname[25];
};

/* Teil b */
print_student(struct student *studi) {
	printf("Matr.Nr.: %i, Vorname: %s, Nachname: %s\n", studi->mat_nr, studi->vorname, studi->nachname);
}

/* Teil c */
print_studenten_db(struct student **db) {
	int i;
	for (i=0; i<ANZAHL; i++) {
		if (db[i] != NULL) {
			print_student(db[i]);
		}
	}
}

/* Teil e */
clear_db(struct student **db) {
	int i;
	for (i=0; i<ANZAHL; i++) {
		if (db[i] != NULL) {
			free(db[i]);
			db[i] = NULL;
		}
	}
}

int main() {
	/* Teil b*/ printf("Teil b\n");
	struct student *ein_student = malloc(sizeof(struct student));
	ein_student->mat_nr = 123456;
	strcpy(ein_student->vorname, "Max");
	strcpy(ein_student->nachname, "Mustermann");
	print_student(ein_student);

	/* Teil c */ printf("Teil c\n");
	struct student *alle_studenten[ANZAHL];
	int i;
	for (i=0; i<ANZAHL; i++) {
		alle_studenten[i] = NULL;
	}
	alle_studenten[0] = ein_student;
	print_studenten_db(alle_studenten);

	/* Teil d */ printf("Teil d\n");
	alle_studenten[1] = malloc(sizeof(struct student));
	alle_studenten[1]->mat_nr=653321;
	strcpy(alle_studenten[1]->vorname, "Herbert");
	strcpy(alle_studenten[1]->nachname, "Meier");
	alle_studenten[2] = malloc(sizeof(struct student));
	alle_studenten[2]->mat_nr=765431;
	strcpy(alle_studenten[2]->vorname, "Hubertine");
	strcpy(alle_studenten[2]->nachname, "Schulze");
	free(alle_studenten[0]);
	alle_studenten[0] = NULL;
	print_studenten_db(alle_studenten);

	/* Teil e */
	clear_db(alle_studenten);
}

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)