Noten
Zu jedem Durchschnitt gehört eine Note. Die Lehrerin vergibt sie so:
- ein Durchschnitt von 45 oder mehr: 1
- 38 oder mehr: 2
- 30 oder mehr: 3
- 20 oder mehr: 4
- weniger als 20: 5
Das ist eine Auswahl zwischen mehreren Möglichkeiten, wofür es else if gibt. Pack sie in eine Funktion, die den Durchschnitt bekommt und die Note zurückgibt. Eine Funktion kann mehr als ein return haben, und eine Bedingung entscheidet, welches ausgeführt wird. Zum Beispiel der Kinoeintritt nach dem Alter:
#include <stdio.h>
int eintritt(int alter) {
if (alter < 15) {
return 5;
} else if (alter < 65) {
return 9;
} else {
return 7;
}
}
int main(void) {
printf("%d\n", eintritt(10));
printf("%d\n", eintritt(30));
printf("%d\n", eintritt(70));
return 0;
}5
9
7Die Reihenfolge der Bedingungen ist wichtig. Das Programm probiert sie von oben nach unten und führt nur die erste aus, die wahr ist. Jede weitere Bedingung wird also nur geprüft, wenn keine der früheren wahr war. Ein Zehnjähriger erfüllt auch alter < 65, aber zu dieser Bedingung kommt das Programm gar nicht. Beginne in note() mit der höchsten Grenze. Wäre die erste Bedingung schnitt >= 20, wäre sie auch für Finn mit 48.3 wahr, und er bekäme eine 4.
Achte auch auf die Grenzen: Ein Durchschnitt von genau 38 ist noch eine 2, die Bedingung lautet also schnitt >= 38, nicht schnitt > 38.
Die Note ist eine Ganzzahl, also gibst du sie mit %d aus, nicht mit %c. Das würde statt der Ziffer 2 das Zeichen mit dem Code 2 ausgeben, das man auf dem Bildschirm nicht sieht.
Den Durchschnitt brauchst du in jeder Zeile zweimal: für die Ausgabe und um die Note zu bestimmen. Speichere ihn also in einer Variablen, double schnitt = durchschnitt(klasse[i]);, dann wird durchschnitt() nur einmal aufgerufen.
So schreibst du es:
Anweisungen
- 1
Schreibe über
ergebnisse_ausgeben()eine Funktionint note(double schnitt), die1für einen Durchschnitt von 45 oder mehr zurückgibt,2für 38 oder mehr,3für 30 oder mehr,4für 20 oder mehr und sonst5. - 2
Speichere in
ergebnisse_ausgeben()den Durchschnitt des Schülers in einer Variablenschnittund gib am Ende der Zeile den Durchschnitt, zwei Leerzeichen und die Note ausnote()aus:printf("%6.1f %d\n", schnitt, note(schnitt));. Das Programm gibt aus:ERGEBNISSE IN MATHE Anna 42 38 45 41.7 2 Emma 36 33 38 35.7 3 Finn 48 50 47 48.3 1 Jonas 14 22 17 17.7 5 Lena 27 40 41 36.0 3Wenn Finn eine 4 hat, prüfe die Reihenfolge der Bedingungen: Die höchste Grenze kommt zuerst.