75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
// ====================== AUFGABE 1: NOTENRECHNER ======================
|
|
|
|
/**
|
|
* Berechnet die Note basierend auf der Punktzahl
|
|
* @param {number} punkte - Die erreichte Punktzahl
|
|
* @returns {string} Die entsprechende Note als Text
|
|
*/
|
|
function berechneNote(punkte) {
|
|
if (punkte >= 90) {
|
|
return "sehr gut";
|
|
} else if (punkte >= 75) {
|
|
return "gut";
|
|
} else if (punkte >= 60) {
|
|
return "befriedigend";
|
|
} else if (punkte >= 50) {
|
|
return "ausreichend";
|
|
} else {
|
|
return "nicht bestanden";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Startet den interaktiven Notenrechner
|
|
* Fragt nach Punktzahl und maximaler Punktzahl
|
|
*/
|
|
function startNotenrechner() {
|
|
// Punkte abfragen
|
|
const punkteInput = prompt("Geben Sie Ihre Punktzahl ein:");
|
|
|
|
// Prüfung auf Abbruch oder leere Eingabe
|
|
if (punkteInput === null || punkteInput.trim() === "") {
|
|
alert("Abgebrochen.");
|
|
return;
|
|
}
|
|
|
|
const punkte = parseFloat(punkteInput);
|
|
|
|
// Validierung: Zahl
|
|
if (isNaN(punkte)) {
|
|
alert("Fehler: Bitte geben Sie eine gültige Zahl ein!");
|
|
return;
|
|
}
|
|
|
|
// Maximale Punktzahl abfragen
|
|
const maxPunkteInput = prompt("Geben Sie die maximale Punktzahl ein:");
|
|
|
|
// Prüfung auf Abbruch oder leere Eingabe
|
|
if (maxPunkteInput === null || maxPunkteInput.trim() === "") {
|
|
alert("Abgebrochen.");
|
|
return;
|
|
}
|
|
|
|
const maxPunkte = parseFloat(maxPunkteInput);
|
|
|
|
// Validierung: Zahl
|
|
if (isNaN(maxPunkte) || maxPunkte <= 0) {
|
|
alert("Fehler: Bitte geben Sie eine gültige Zahl ein!");
|
|
return;
|
|
}
|
|
|
|
// Prozentsatz berechnen
|
|
const prozentsatz = (punkte / maxPunkte) * 100;
|
|
|
|
// Note berechnen (basierend auf Prozentsatz)
|
|
const note = berechneNote(prozentsatz);
|
|
|
|
// Ergebnis formatieren
|
|
const ergebnis = `${punkte} von ${maxPunkte} Punkten (${prozentsatz.toFixed(2)}%) = ${note}`;
|
|
|
|
// Ausgabe auf Konsole
|
|
console.log(ergebnis);
|
|
|
|
// Ausgabe als Alert
|
|
alert(ergebnis);
|
|
}
|