C# :: Aufgabe #327
4 Lösungen

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ß
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ß
Lösungen:

using System; namespace HitzeIndex { class Program { static void Main(string[] args) { double c1 = -8.784695; double c2 = 1.61139411; double c3 = 2.338549; double c4 = -0.14611605; double c5 = -1.2308094e-2; double c6 = -1.6424828e-2; double c7 = 2.211732e-3; double c8 = 7.2546e-4; double c9 = -3.582e-6; int t; int h; System.Console.WriteLine("Temperatur in Grad Celsius eingeben "); t = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Luftfeuchtigkeit in % eingeben "); h = Convert.ToInt32(Console.ReadLine()); var 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; Console.WriteLine($"Bei einer Temperatur von {t} Grad Celsius und einer Luftfeuchtigkeit von {h}%, beträgt die gefühlte Temperatur {hi:N0} Grad Celsius"); Console.ReadLine(); } } }

using System; namespace _327_Hitzeindex { class Program { static void MyHitzeIndex() { Console.WriteLine("Aktuelle Temperatur in °C: "); int temp = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Aktuelle Luftfeuchte in %: "); int luftFeuchte = Convert.ToInt32(Console.ReadLine()); double[] zahlen = new double[] { -8.784695, 1.61139411, 2.338549, -0.14611605, -0.012308094, -0.016424828, 0.002211732, 0.00072546, -0.000003582 }; double hi = zahlen[0] + (zahlen[1] * temp) + (zahlen[2] * luftFeuchte) + (zahlen[3] * temp * luftFeuchte) + (zahlen[4] * temp * temp) + (zahlen[5] * luftFeuchte * luftFeuchte) + (zahlen[6] * temp * temp * luftFeuchte) + (zahlen[7] * temp * luftFeuchte * luftFeuchte) + (zahlen[8] * temp * temp * luftFeuchte * luftFeuchte); short shortHi = Convert.ToInt16(hi); Console.WriteLine("Die gefühlte Temperatur beträgt bei der Isttemperatur von {0}°C und der aktuellen Luftfeuchte von {1}%: {2}°C", temp, luftFeuchte, shortHi); Console.ReadKey(); } static void Main(string[] args) { MyHitzeIndex(); } } }
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
C#-Code
Neuerung in C# 9.x: Top-Level-Anweisung
https://docs.microsoft.com/de-de/dotnet/csharp/whats-new/csharp-9

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) }");

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Übungen_Aufgaben_zu_C_345 { class Program { static void Main(string[] args) { double c1 = -8.784695; double c2 = 1.61139411; double c3 = 2.338549; double c4 = -0.14611605; double c5 = -1.2308094e-2; double c6 = -1.6424828e-2; double c7 = 2.211732e-3; double c8 = 7.2546e-4; double c9 = -3.582e-6; int Temperatur; int Hitze; Console.WriteLine("Bitte Temperaturemperatur eingeben: C"); Temperatur = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Bitte Luftfeuchtigkeit eingeben: %"); Hitze = Convert.ToInt32(Console.ReadLine()); var Hitze1 = c1 + c2 * Temperatur + c3 * Hitze + c4 * Temperatur * Hitze + c5 * Temperatur * Temperatur + c6 * Hitze * Hitze + c7 * Temperatur * Temperatur * Hitze + c8 * Temperatur * Hitze * Hitze + c9 * Temperatur * Temperatur * Hitze * Hitze; Console.WriteLine($"Bei einer Temperaturemperatur von {Temperatur} Grad Celsius und einer Luftfeuchtigkeit von {Hitze}%, beträgt die gefühlte Temperaturemperatur {Hitze:N0} Grad Celsius"); Console.ReadLine(); Console.ReadKey(); } } }