Noten
Jedes Ergebnis bekommt eine Note. Die Lehrerin vergibt sie nach der Punktzahl:
- 45 bis 50 Punkte: A
- 38 bis 44 Punkte: B
- 30 bis 37 Punkte: C
- 20 bis 29 Punkte: D
- weniger als 20 Punkte: F
Das ist die Wahl zwischen mehreren Möglichkeiten, wofür else if da ist. Schreibe sie in eine Funktion, die die Punktzahl bekommt und die Note zurückgibt. Eine Funktion kann mehr als ein return haben, und eine Bedingung entscheidet, welches ausgeführt wird. Die Note ist ein Buchstabe, die Funktion gibt also ein char zurück: Schreibe char vor ihren Namen und gib Buchstaben in einfachen Anführungszeichen zurück, wie 'A'. Zum Beispiel Hemdgrößen:
#include <iostream>
char hemdGroesse(int koerpergroesse) {
if (koerpergroesse < 150) {
return 'S';
} else if (koerpergroesse < 175) {
return 'M';
} else {
return 'L';
}
}
int main() {
std::cout << hemdGroesse(140) << std::endl;
std::cout << hemdGroesse(160) << std::endl;
std::cout << hemdGroesse(185) << std::endl;
return 0;
}S
M
LDie 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. Wer 140 cm groß ist, erfüllt auch koerpergroesse < 175, aber zu dieser Bedingung kommt das Programm nie. Beginne in note() deshalb mit der höchsten Grenze. Wäre die erste Bedingung punktzahl >= 20, träfe sie auch auf Finn mit 48 Punkten zu, und er bekäme ein D.
Achte auch auf die Grenzen: 45 Punkte sind noch ein A, die Bedingung ist also punktzahl >= 45, nicht punktzahl > 45.
Und achte auf die Anführungszeichen: "A" in doppelten Anführungszeichen ist Text (ein String), kein char, und der Compiler meldet einen Fehler:
main.cpp:8:16: error: cannot initialize return object of type 'char' with an lvalue of type 'const char[2]'Schreibe die neue Funktion über gibErgebnisseAus(), die sie aufruft. Stünde sie darunter, würde der Compiler sie an der Stelle des Aufrufs noch nicht kennen und einen Fehler melden:
main.cpp:9:75: error: use of undeclared identifier 'note'Eine Funktion, die einen Wert zurückgibt, kannst du direkt in der Ausgabe aufrufen: std::cout << note(punkte[i]) gibt die Note des Schülers mit dem Index i aus.
So schreibst du es:
Anweisungen
- 1
Schreibe über
gibErgebnisseAus()eine Funktionchar note(int punktzahl), die'A'für 45 Punkte oder mehr zurückgibt,'B'für 38 oder mehr,'C'für 30 oder mehr,'D'für 20 oder mehr und sonst'F'. - 2
Füge in
gibErgebnisseAus()am Ende der Zeile jedes Schülers ein Komma, ein Leerzeichen, das WortNote, ein Leerzeichen und die Note hinzu, dienote()berechnet:Anna: 42 Punkte, Note B Emre: 38 Punkte, Note B Finn: 48 Punkte, Note A Jonas: 14 Punkte, Note F Lena: 27 Punkte, Note DWenn Emre mit 38 Punkten ein C hat, prüfe, ob die Bedingung für ein B
>=verwendet.