C# :: Aufgabe #327

4 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von Trickster (330 Punkte) - 21.10.2020 um 22:51 Uhr
Quellcode ausblenden C#-Code
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();
        }
    }
}
vote_ok
von Luigi (990 Punkte) - 05.11.2020 um 11:33 Uhr
Quellcode ausblenden C#-Code
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();
        }
    }
}
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) }");
vote_ok
von Overmeier (120 Punkte) - 03.12.2020 um 17:07 Uhr
Quellcode ausblenden C#-Code
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();

        }
    }
}