125 lines
2.7 KiB
C
125 lines
2.7 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
typedef struct schueler {
|
|
char name[50];
|
|
char vorname[50];
|
|
int note;
|
|
struct schueler *next
|
|
}Schueler;
|
|
|
|
|
|
void einfuegen (Schueler *head, char *name, char *vorname, int note ){
|
|
|
|
Schueler* current = head;
|
|
|
|
Schueler *neu = malloc(sizeof(Schueler));
|
|
|
|
|
|
while(current->next != NULL) {
|
|
current = current->next;
|
|
}
|
|
|
|
strcpy(neu->name, name);
|
|
strcpy(neu->vorname, vorname);
|
|
neu->note = note;
|
|
neu->next = NULL;
|
|
|
|
current -> next = neu;
|
|
|
|
}
|
|
|
|
void printList(Schueler *head){
|
|
Schueler* current = head -> next;
|
|
int counter = 1;
|
|
|
|
while(current->next != NULL) {
|
|
printf("%d. %s \t\t%s \t\t%d \n",counter, current -> name, current -> vorname, current -> note);
|
|
counter++;
|
|
current = current->next;
|
|
}
|
|
printf("%d. %s \t\t%s \t\t%d \n",counter, current -> name,current -> vorname, current -> note);
|
|
}
|
|
|
|
void durch(int *spiegel) {
|
|
|
|
for (int i = 1; i <= 6 ; ++i) {
|
|
printf("Note %d:", i);
|
|
|
|
|
|
for (int j = 0; j < spiegel[i-1]; ++j) {
|
|
printf("*");
|
|
}
|
|
|
|
printf("\n");
|
|
}
|
|
|
|
|
|
}
|
|
|
|
int main (){
|
|
Schueler anker;
|
|
char name[50], vorname[50], note_eingabe[10];
|
|
int note, counter = 1, temp = 0, spiegel[6] = {};
|
|
double durchschnitt = 0;
|
|
|
|
anker.next= NULL;
|
|
|
|
do {
|
|
printf("----Eingabe des %d.Schuelers----\n", counter);
|
|
printf("Name:");
|
|
fgets(name, sizeof(name), stdin);
|
|
|
|
if(strcmp(name, "\n") == 0){
|
|
break;
|
|
}
|
|
name[strcspn(name, "\n")] = '\0';
|
|
|
|
printf("Vorname:");
|
|
fgets(vorname, sizeof(vorname), stdin);
|
|
vorname[strcspn(vorname, "\n")] = '\0';
|
|
|
|
|
|
printf("Note:");
|
|
fgets(note_eingabe, sizeof(note_eingabe), stdin);
|
|
note_eingabe[strcspn(note_eingabe, "\n")] = '\0';
|
|
note = atoi(note_eingabe);
|
|
|
|
switch (note) {
|
|
case 1:
|
|
spiegel[0] += 1;
|
|
break;
|
|
case 2:
|
|
spiegel[1] +=1;
|
|
break;
|
|
case 3:
|
|
spiegel[2] += 1;
|
|
break;
|
|
case 4:
|
|
spiegel[3] += 1;
|
|
break;
|
|
case 5:
|
|
spiegel[4] += 1;
|
|
break;
|
|
case 6:
|
|
spiegel[5] += 1;
|
|
break;
|
|
}
|
|
|
|
einfuegen(&anker, name, vorname, note);
|
|
|
|
temp += note;
|
|
|
|
counter++;
|
|
}while(1);
|
|
|
|
printf("Name \tVorname \tNote\n");
|
|
printf("---------------------------------------------------\n");
|
|
printList(&anker);
|
|
printf("....Durchschnittsnote: %.2f\n", (double)temp / (counter - 1));
|
|
printf("...Notenspiegel\n");
|
|
durch((int *)spiegel);
|
|
}
|
|
|