Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
138 lines (124 sloc) 3.56 KB
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
void punkteAbfragen();
void maxPunktezahlAbfragen();
void statistikAusgeben();
void anzahlStudentenProNoteBerechnen();
int calculateBestMark();
int calculateWorstMark();
int calculatePassed();
double calculateAverageMark();
bool badTeacher();
int punkte[100];
int anzahlEingaben = 0;
int studentCountPerMark[6] = {0};
int maxPunktzahl = 0;
int main() {
bool firstround = true;
do {
maxPunktezahlAbfragen();
if (firstround) {
punkteAbfragen();
firstround = false;
}
anzahlStudentenProNoteBerechnen();
statistikAusgeben();
} while (badTeacher());
return 0;
}
bool badTeacher() {
(void)printf("DID U TEACH GOOD ENOUGH?!!?!!! Plz press \"myteachingsucks\" if u want to lower Standards or anything else if ur satisfied. OK???\n");
char eingabe[32];
scanf("%s", eingabe);
if(strncmp(eingabe, "myteachingsucks", 32) == 0) {
for (int i = 0; i < 6; ++i)
studentCountPerMark[i] = 0;
return true;
} else {
return false;
}
}
void statistikAusgeben() {
(void)printf("------------------------------------------------\n");
(void)printf("STATSTTISTIK: %d Studenten unds max Punkte sind %d.\n\n", anzahlEingaben, maxPunktzahl);
for (int i = 0; i < 6; i++) {
printf("Note %d: %d Studenten!! <-- lol\n", i + 1, studentCountPerMark[i]);
}
(void)printf("\nbest: %d worst: %d average: %.2f passed: %d (%d Prozent) \n", calculateBestMark(), calculateWorstMark(), calculateAverageMark(), calculatePassed(), 100*calculatePassed()/anzahlEingaben);
}
void punkteAbfragen() {
(void)printf("Bitte Punkte eingeben odr 0 tuet abbreche lol:\n");
int aktuellePunkte = 0;
size_t i = 0;
while (scanf("%d", &aktuellePunkte)) {
if (aktuellePunkte > 0) {
punkte[i] = aktuellePunkte;
i++;
anzahlEingaben++;
printf("Bitte weitere Punkte eingeben oder 0 zum abbrechen:\n");
} else if (aktuellePunkte == 0) {
printf("Danke für igabe du bisch de besti Bro :)\n");
break;
} else {
printf("Ungueltig plz grösser als 0 odr 0 zun beenden\n");
}
}
}
void maxPunktezahlAbfragen() {
printf("Bitte max Punkte eingeben lol:\n");
int eingabe;
scanf("%d", &eingabe);
if(eingabe > 0) {
maxPunktzahl = eingabe;
} else {
printf("FAIL:\n");
}
}
void anzahlStudentenProNoteBerechnen() {
double mark = 0;
for (int i = 0; i < anzahlEingaben; i++) {
mark = (double) punkte[i] * 5 / maxPunktzahl;
int roundedMark = mark;
if ((mark - roundedMark) >= 0.5) {
roundedMark++;
}
if (roundedMark > 5) {
roundedMark = 5;
}
studentCountPerMark[roundedMark]++;
}
}
int calculateBestMark(){
int hightest = 0;
for (int i = 0; i < 6; i++) {
if (studentCountPerMark[i] > 0) {
hightest = i;
}
}
return hightest + 1;
}
int calculateWorstMark(){
for (int i = 0; i < 6; i++) {
if (studentCountPerMark[i] > 0) {
return i + 1;
}
}
return 0;
}
double calculateAverageMark(){
double average = 0;
for (int i = 0; i < 6; i++) {
average += (double) studentCountPerMark[i] * (i + 1);
}
return average / anzahlEingaben;
}
int calculatePassed(){
int count = 0;
for (int i = 3; i < 6; i++) {
if (studentCountPerMark[i] > 0) {
count += studentCountPerMark[i];
}
}
return count;
}