Informatik2_Pr/noteverw.c
2025-05-22 20:10:46 +02:00

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);
}