C# :: Aufgabe #327 :: Lösung #3

4 Lösungen Lösungen öffentlich
#327

Hitzeindex (gefühlte Temperatur)

Anfänger - C# von JKooP - 04.10.2020 um 12:08 Uhr
Die auf dem Thermometer, vor allem im Sommer, angezeigt Temperatur stimmt häufig nicht mit der gefühlten Temperatur überein. Denn je feuchter die Luft, desto wärmer nehmen wir die Temperatur wahr. Deshalb wurde der Hitzeindex (HI) eingeführt, der generell für Temperaturen ab 27°C und einer relativen Luftfeuchte von mehr als 40% angewendet wird.

Schreibe eine Methode/Funktion, die Temperatur (t) und Luftfeuchte (h) entgegennimmt und den Hitzeindex (hi) ausgibt.

hi = c1 + c2*t + c3*h +
c4*t*h + c5*t*t + c6*h*h +
c7*t*t*h + c8*t*h*h +
c9*t*t*h*h


c1 = -8.784695,
c2 = 1.61139411,
c3 = 2.338549,
c4 = -0.14611605,
c5 = -1.2308094e-2,
c6 = -1.6424828e-2,
c7 = 2.211732e-3,
c8 = 7.2546e-4,
c9 = -3.582e-6

Viel Spaß
#3
vote_ok
von JKooP (18090 Punkte) - 15.11.2020 um 11:30 Uhr
NET 5.x; C# 9.x
Neuerung in C# 9.x: Top-Level-Anweisung
https://docs.microsoft.com/de-de/dotnet/csharp/whats-new/csharp-9
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using static System.Math;

List<(double c, double ti, double pi)> lst = new () // C# 9.x
{
    (-8.784695,     0,  0), (1.61139411,    1,  0), (2.338549,      0,  1),
    (-0.14611605,   1,  1), (-1.2308094e-2, 2,  0), (-1.6424828e-2, 0,  2),
    (2.211732e-3,   2,  1), (7.2546e-4,     1,  2), (-3.582e-6,     2,  2),
};

double HeatIndex(double t, double p) => t > 27 && p > 40 ? Round(lst.Select(x => x.c * Pow(t, x.ti) * Pow(p, x.pi)).Sum(), 2) : 0;

Console.Write("Temperatur in °C: ");
_ = double.TryParse(Console.ReadLine(), out var t);
Console.Write("Luftfeuchte in %: ");
_ = double.TryParse(Console.ReadLine(), out var p);
Console.Write($"Hitzeindex: { HeatIndex(t, p) }");

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben