JS zadanie domowe 3

<!DOCTYPE html>
<html lang="pl">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Temperatura</title>
  </head>
  <body>
    <script>
      let minTemp = parseFloat(
        prompt("Podaj minimalną temperaturę optymalną:")
      );
      let maxTemp = parseFloat(
        prompt("Podaj maksymalną temperaturę optymalną: ")
      );

      function validateTemperatureInput(minTemp, maxTemp) {
        if (isNaN(minTemp) || isNaN(maxTemp)) {
          alert("Błąd: podane wartości nie są liczbami!");
          return false;
        }
        if (minTemp < 0 || minTemp > 50 || maxTemp < 0 || maxTemp > 50) {
          alert("Błąd: wartości muszą być w zakresie 0°C–50°C");
          return false;
        }
        if (minTemp > maxTemp) {
          alert(
            "Błąd: minimalna temperatura nie może być większa od maksymalnej"
          );
          return false;
        }
        return true;
      }
      while (!validateTemperatureInput(minTemp, maxTemp)) {
        minTemp = parseFloat(prompt("Podaj minimalną temperaturę optymalną:"));
        maxTemp = parseFloat(
          prompt("Podaj maksymalną temperaturę optymalną: ")
        );
      }
      function calculateOptimalTemperature(minTemp, maxTemp) {
        return (minTemp + maxTemp) / 2;
      }

      const optimalTemp = calculateOptimalTemperature(minTemp, maxTemp);
      alert(`Optymalna temperatura wynosi: ${optimalTemp}`);

      function pidAdjustment(currentTemp, optimalTemp, coefficient = 0.3) {
        const difference = optimalTemp - currentTemp;
        return difference * coefficient;
      }

      let currentTemp = 10;
      console.log(`Minimalna optymalna wartość: ${minTemp}°C`);

      console.log(`Maksymalna optymalna wartość: ${maxTemp}°C`);

      console.log(`Optymalna optymalna wartość: ${optimalTemp}°C`);
      console.log("Symulacja pracy termostatu: ");
      for (let i = 1; i <= 40; i++) {
        const adjustment = pidAdjustment(currentTemp, optimalTemp);
        currentTemp += adjustment;
        console.log(
          `Pomiar ${i}: Temperatura ${currentTemp.toFixed(
            2
          )}°C (zmiana: ${adjustment.toFixed(2)}°C)`
        );
      }
      console.log("Symulacja zakończona");
      alert("Symulacja zakończona");
    </script>
  </body>
</html>