Wie findet ihr meinen Code

fabetr

Neues Mitglied
Javascript:
`use strict`;

//Dialogfenster: alert, confirm, prompt
// alert
// spielt einen kurzen Text ein
// confirm
// spielt eine Abfrage ein, die der Benutzer bestätigen oder abgelehnen (cancel) kann.
// prompt
// spielt ebenfalls eine Abfrage ein, und zusätzlich ein Feld für eine Benutzereingabe.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Wann wird if, else if und else in JavaScript verwendet?
// Struktur              Wann wird es verwendet?
// if                    Prüft eine erste Bedingung
// else if               Prüft eine weitere Bedingung, falls die vorherigen false sind
// else                  Wird ausgeführt, wenn keine vorherigen Bedingungen true sind
// Beispiel:
// let zahl = 3;
// if (zahl > 10)
// {console.log("Die Zahl ist größer als 10.");}
// else if (zahl === 10)
// {console.log("Die Zahl ist genau 10.");}
// else {console.log("Die Zahl ist kleiner als 10.");}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 1
// Analyse eines Einkaufs
// Programmieren Sie eine Simulation einer Einkaufssituation. Dabei sollen die Kosten für 4 Artikel
// erfasst, berechnet und verschiedene Ausgaben anzeigt werden. Ihre Programmierung sollte
// folgend Anforderungen erfüllen:
// Der Benutzer gibt die Preise von vier Artikeln über prompt-Fenster ein, die Ausgaben sollen in
// einer Ausgabebox (alert) angezeigt werden. Zwischenergebnisse können Sie in der Konsole ihres
// Browsers anzeigen lassen.
// Artikelpreise erfassen
let artikelPreise = []; // Erstellt ein leeres Array, also eine Liste, in die später die Beträge der Artikel gespeichert werden.
for (let i = 1; i <= 4; i++) // i++ erhöht den Zähler immer um 1 .... Das ist eine Schleife, die viermal durchläuft – von i = 1 bis i = 4
    {
    let betrag = Number(prompt(`Wie lautet der Betrag in Cent für Artikel ${i}?`)); //Die Eingabe wird als Zahl (Number) gespeichert in betrag... Fragt so häufig wie oft i gesetzt wurde
    artikelPreise.push(betrag); // Fügt den eingegebenen Betrag in das Array artikelPreise ein.
                                // Beispiel:
                                // Wenn du eingibst: 100, 200, 150, 300 →
                                // Dann ist artikelPreise am Ende: [100, 200, 150, 300]
    console.log(`Artikel ${i}: ${betrag} Cent`);
    }
// a) Gesamtkosten
let gesamt = artikelPreise.reduce((summe, wert) => summe + wert, 0);
                                // reduce(...) geht alle Werte im Array durch (z. B. [100, 200, 300]) und addiert sie:
                                // summe startet bei 0
                                // wert ist jeweils ein Element aus dem Array
                                // Ergebnis: gesamt = 100 + 200 + 300 = 600
alert("Alle Artikel zusammen kosten: " + gesamt + " Cent");
// b) Durchschnitt
let durchschnitt = gesamt / artikelPreise.length; // artikelPreise.length = Anzahl der Artikel im Array (z. B. 4 Artikel)
alert("Alle Artikel kosten im Schnitt: " + durchschnitt.toFixed(2) + " Cent");
// c) Günstigster Artikel
let minWert = Math.min(...artikelPreise);
                                // Math.min(...artikelPreise) → findet den kleinsten Wert im Array
                                // ...artikelPreise wandelt das Array in eine Liste von Zahlen um. ohne die ... funktioniert es nicht
let minIndex = artikelPreise.indexOf(minWert) + 1;
                                // indexOf(...) → gibt die Position im Array zurück (0-basiert)
                                // +1 → damit wir z. B. Artikel 1 statt Index 0 sagen können
alert("Der niedrigste Betrag ist: " + minWert + " Cent (Artikel " + minIndex + ")");
// d) Teuerster Artikel
let maxWert = Math.max(...artikelPreise);
let maxIndex = artikelPreise.indexOf(maxWert) + 1;
                                // Funktioniert genauso wie bei minWert, nur mit Math.max(...)
                                // Findet also den höchsten Betrag und dessen Position
alert("Der höchste Betrag ist: " + maxWert + " Cent (Artikel " + maxIndex + ")");

////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 2
// Programmierung eines einfachen Taschenrechners
// Programmieren Sie einen einfachen Taschenrechner, der dem Nutzer nach Eingabe von zwei
// Zahlenwerten und einer gängigen Rechenoperation (Addition, Subtraktion, Multiplikation und
// Division) das berechnete Ergebnis anzeigt.
let zahl1 = Number(prompt("Eingabe der ersten Zahl:"));
let zahl2 = Number(prompt("Eingabe der zweiten Zahl:"));
let operator = prompt("Was soll gerechnet werden? Gib ein: +  -  *  /");
let ergebnis;
if (operator === "+") ergebnis = zahl1 + zahl2; // === bedeutet: "ist exakt gleich" (inkl. Typprüfung).
else if (operator === "-") ergebnis = zahl1 - zahl2;
else if (operator === "*") ergebnis = zahl1 * zahl2;
else if (operator === "/") ergebnis = zahl1 / zahl2;
else ergebnis = "Ungültiger Operator";
alert(`Dein Ergebnis: ${zahl1} ${operator} ${zahl2} = ${ergebnis}`);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 3
// Schere, Stein, Papier

// Programmieren Sie das klassische Spiel „Schere, Stein, Papier“, welches der Nutzer gegen den

// Computer spielt. Für die Auswahl des Computers lassen Sie Zufallszahlen erstellen und nutzen

// bitte folgende Zuordnungen:

// 1 = Schere, 2 = Stein, 3 = Papier (zur Erinnerung: Eine Zufallszahl zwischen 0 und 1 wird mit Hilfe

// des Befehls Math.random() generiert.
do {
    const eingabe = Number(prompt("Wir spielen 1 = Schere, 2 = Stein, 3 = Papier. Was wählst du?"));
    if (![1, 2, 3].includes(eingabe))  // das ! bedeutet NICHT enthalten, .includes(eingabe) prüft: Ist eingabe in diesem Array enthalten?
        {
        alert("Ungültige Eingabe! Bitte gib 1, 2 oder 3 ein.");
        continue;
    }
    const zufall = Math.floor(Math.random() * 3) + 1;
        // Math.floor(...) rundet nach unten auf die nächste ganze Zahl
        // Math.random() liefert eine Zufallszahl zwischen 0 (inkl.) und 1 (exkl.), z. B. 0.57
        // * 3 skaliert die Zufallszahl auf 0 bis knapp unter 3, z. B. 0.57 * 3 = 1.71
        // + 1 verschiebt den Bereich von 0–2 auf 1–3
    alert("Computer wählt: " + zufall);
    if (eingabe === zufall) {
        alert("Unentschieden");
    } else if (
        (eingabe === 1 && zufall === 3) ||  // Schere schlägt Papier
        (eingabe === 2 && zufall === 1) ||  // Stein schlägt Schere
        (eingabe === 3 && zufall === 2)     // Papier schlägt Stein
    ) {
        alert("Du hast gewonnen!");
    } else {
        alert("Der Computer hat gewonnen.");
    }
} while (confirm("Möchtest du noch einmal spielen?"));

// Die do-while-Schleife sorgt dafür, dass der Code mindestens einmal ausgeführt wird und sich danach wiederholt, solange der Nutzer dies möchte.
// do:
//     Hier beginnt die Schleife. Der gesamte Codeblock innerhalb der geschweiften Klammern { ... } wird mindestens einmal ausgeführt.
// while (confirm("Möchtest du noch einmal spielen?")):
//     Nach jeder Runde erscheint ein Bestätigungsdialog (confirm).
//     Falls der Nutzer auf "OK" klickt, wird das Spiel erneut gestartet. Falls er "Abbrechen" wählt, endet die Schleife.

////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 4
// BMI-Rechner
// Programmieren Sie einen BMI-Rechner, der das Gewicht und die Größe eines Benutzers
// verwendet, um den Body Mass Index (BMI) zu berechnen und eine entsprechende
// Gewichtskategorie anzuzeigen.
// Folgende Anforderungen sollen dabei erfüllt werden:
// 1. Der Benutzer gibt sein Gewicht in Kilogramm über ein prompt-Fenster ein.
// 2. Der Benutzer gibt seine Größe in Metern (Achtung! Kommata bitte als Punkte eingeben!) über ein prompt-Fenster ein.
// 3. Lassen Sie den BMI mit der Formel: 𝐵𝑀𝐼 = 𝐺𝑒𝑤𝑖𝑐ℎ𝑡 / 𝐺𝑟öß𝑒2 berechnen.
// 4. Verwenden Sie if-Anweisungen, um die Gewichtskategorie basierend auf dem BMI zu bestimmen:
// o Untergewicht: BMI < 18.5
// o Normalgewicht: 18.5 ≤ BMI < 24.9
// o Übergewicht: 25 ≤ BMI < 29.9
// o Adipositas: BMI ≥ 30
// 5. Zeigen Sie das Ergebnis des BMI und die entsprechende Gewichtskategorie in einem alert-Fenster an.



// In JavaScript (und generell in der englischen Schreibweise von Zahlen) wird der Dezimalpunkt (.) verwendet — nicht das Komma (,).
//     prompt() gibt einen Text (String) zurück.
//     Number("1.75") → ergibt die Zahl 1.75 ✅
//     Number("1,75") → ergibt NaN (Not a Number) ❌
// Denn JavaScript versteht "1,75" nicht als gültige Zahl, weil das Komma dort kein Dezimaltrennzeichen ist.
// 💡 Tipp: Willst du Kommas zulassen, könntest du den String vorher ersetzen:
// let eingabe = prompt("Größe in Meter (mit Punkt oder Komma):");
// let bmi_größe = Number(eingabe.replace(",", "."));
alert("BMI-Rechner");
const gewicht = Number(prompt("Gib dein Gewicht in kg ein:"));
const größeInput = prompt("Gib deine Körpergröße in Meter ein (z. B. 1.75 oder 1,75):");
const größe = Number(größeInput.replace(",", ".")); // erlaubt Komma oder Punkt
const bmi = gewicht / (größe * größe);
const bmiGerundet = bmi.toFixed(2); // tofixed(2) rundet auf zwei nachkommastellen
let kategorie = "";  // Erstellt eine leere Variable namens kategorie, in der später die Bewertung (z. B. „Normalgewicht“) gespeichert wird.
if (bmi < 18.5) {
  kategorie = "Untergewicht";
} else if (bmi < 24.9) {
  kategorie = "Normalgewicht";
} else if (bmi < 29.9) {
  kategorie = "Übergewicht";
} else {
  kategorie = "Adipositas";
}
alert(`Dein BMI ist: ${bmiGerundet} (${kategorie})`);



// Aufgabe 5: Trinkgeldrechner
// Ziel: Berechne den Rechnungsbetrag inkl. Trinkgeld.
let rechnung = Number(prompt("Wie hoch ist der Rechnungsbetrag in Euro?"));
let trinkgeldProzent = Number(prompt("Wie viel Prozent Trinkgeld möchtest du geben?"));
let trinkgeld = rechnung * (trinkgeldProzent / 100);
let gesamtbetrag = rechnung + trinkgeld;
alert(`Trinkgeld: ${trinkgeld.toFixed(2)} €\nGesamtbetrag: ${gesamtbetrag.toFixed(2)} €`);
// Erweiterung: Wenn der Betrag höher als 100 € ist, gib eine besondere Nachricht aus („Große Rechnung heute!“).

if (gesamtbetrag >= 100) {alert ("Große Rechnung heute!")}
else {alert ("Rechnung vollkommen oK!")};



// Aufgabe 6: Einkaufswagen mit beliebig vielen Artikeln
// Ziel: Lass den Nutzer selbst entscheiden, wie viele Artikel er eingeben möchte.

let anzahl = Number(prompt("Wie viele Artikel möchtest du eingeben?"));
let preise = [];
for (let i = 1; i <= anzahl; i++) {
    let preis = Number(prompt(`Preis für Artikel ${i} in Cent:`));
    preise.push(preis);

}

let summe = preise.reduce((acc, val) => acc + val, 0);
let durchschnitt = summe / preise.length;
alert(`Gesamt: ${summe} Cent\nDurchschnitt: ${durchschnitt.toFixed(2)} Cent`);
// Erweiterung: Gib wieder den teuersten und den günstigsten Artikel aus.
let maxwert6 = Math.max (...preise)
let maxindex6 = preise.indexOf (maxwert6) +1;
alert ("Der Höchste Betrag ist: " +maxwert6 + " Cent (Artikel " + maxindex6 +")");
let minwert6 = Math.min (...preise)         // bei Math.min und max auf Großschreibung achten
let minindex6 = preise.indexOf (minwert6) +1; // bei indexOf auf Großschreibung achten
alert ("Der niedrigste Betrag ist: " +minwert6 + " Cent (Artikel " +minindex6 +")");
 
Zuletzt bearbeitet von einem Moderator:

KonradN

Super-Moderator
Mitarbeiter
a) Java Script != Java. JavaScript gehört in das entsprechende Unterforum
b) Bitte nutze Code Tags wenn Du Code posten willst. dies geht am einfachsten über den Knopf </> links oberhalb des Eingabebereiches
c) Poste 6 Codeblöcke - immer eine Aufgabe auf einmal, wo dann der Code nicht auskommentiert ist.
 

Oneixee5

Top Contributor
Dialogfenster: alert, confirm, prompt -> geht überhaupt nicht. Das Browserfenster wird blockiert, was natürlich totaler Unsinn ist. Die Hersteller geben sich Mühe, dass alles immer ohne Wartezeit weiterläuft und dann baut jemand alert, confirm, prompt ein. Viele JS-Linter bemängeln das auch, zu Recht, als Sicherheitslücke.
 

Oneixee5

Top Contributor
Ich denke hier:
Javascript:
let durchschnitt = summe / preise.length;
kann es zu einer Division durch 0 kommen.
 

mihe7

Top Contributor
Das ist natürlich schwierig, weil das Code ist, der offensichtlich für die Schule gedacht ist. Insofern muss man da andere Anforderungen annehmen. Beispielsweise wären die Kommentare in der Praxis eine Katastrophe, hier soll das aber vermutlich so gemacht werden. Auch die fehlende Fehlerbehandlung könnte man im realen Leben natürlich nicht durchgehen lassen.

Grundsätzlich würde ich aber dennoch vier Dinge anmerken wollen: a) verwende const statt let, wo immer möglich, b) vermeide Magic Numbers, c) achte auf gute Bezeichner (hast Du meistens gemacht) und d) lass den Code mal von der IDE/dem Editor formatieren, damit Dinge wie Leerzeichen um Operatoren und Parameterlisten bei Funktions-/Methodenaufrufen einheitlich im Code stehen.

Was mir dagegen sehr gut gefällt ist, dass Du Dich anscheinend an Benennungskonventionen gehalten hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Umfangreiche .zip Datei in VS Code öffen Angular, React, JQuery - Fragen zu JavaScript 2
thor_norsk TypeScript Code in Java Script zu konvertieren. Angular, React, JQuery - Fragen zu JavaScript 2
H Code in Chrome löschen Angular, React, JQuery - Fragen zu JavaScript 2
D NodeJS bzw. Javacript Code öffnen (im Browser) Angular, React, JQuery - Fragen zu JavaScript 26
J Welche Bedeutung hat Code außerhalb von Funktionen Angular, React, JQuery - Fragen zu JavaScript 3
N Farbänderung durch Hex Code Angular, React, JQuery - Fragen zu JavaScript 2
T Wie kann man den code hier abändern, damit es "Array-werte" einliest und nicht Excelwerte? Angular, React, JQuery - Fragen zu JavaScript 2
N Kann mir wer helfen, den Code zu erklären Angular, React, JQuery - Fragen zu JavaScript 3
thowe bestehenden Code erwarten Angular, React, JQuery - Fragen zu JavaScript 6
C In Wordpress unter Custom-Js mit Javascript den ursprünglichen Code deaktivieren Angular, React, JQuery - Fragen zu JavaScript 0
T html code per javascript einfügen Angular, React, JQuery - Fragen zu JavaScript 7
R Java Code Hilfe Angular, React, JQuery - Fragen zu JavaScript 16
S Frage zum Code Angular, React, JQuery - Fragen zu JavaScript 2
N bb code Angular, React, JQuery - Fragen zu JavaScript 3
D wie integriere ich ein java-sript in einen htm-code? Angular, React, JQuery - Fragen zu JavaScript 2
M habe java code aber etwas funktioniert nicht Angular, React, JQuery - Fragen zu JavaScript 2
S java code positionieren Angular, React, JQuery - Fragen zu JavaScript 2
M Warum funktioniert der Code nur einmal im Frame? Angular, React, JQuery - Fragen zu JavaScript 2
F Frage zu Code Angular, React, JQuery - Fragen zu JavaScript 11
F Anfängerfrage zu Code Angular, React, JQuery - Fragen zu JavaScript 2
F Ich verstehe den Code nicht? Angular, React, JQuery - Fragen zu JavaScript 6

Ähnliche Java Themen

Neue Themen


Oben