C# :: Aufgabe #317 :: Lösung #2

2 Lösungen Lösungen öffentlich
#317

WHtR (Waist to Height Ratio) berechnen

Anfänger - C# von JKooP - 10.05.2020 um 09:17 Uhr
Schreibe ein Programm zur Ermittlung des WHtR- Wertes aus Taillenumfang + Körpergröße und der daraus resultierenden Bewertung.

Es sollen sowohl das Geschlecht (m/w) als auch das Kindesalter bzw. der Altersfaktor für Erwachsene berücksichtigt werden.

Viel Spaß
#2
vote_ok
von JKooP (18090 Punkte) - 02.11.2020 um 16:32 Uhr
// NET Core 3.x
Quellcode ausblenden C#-Code
using System;

namespace CS_Aufgabe_317_WHtR
{
    class Program
    {
        static void Main(string[] args)
        {
            var whtr = new WHtR(45, Geschlecht.maennlich, 100, 185);
            Console.WriteLine(whtr);
        }
    }

    public enum Gewichtskategorie
    {
        Unbekannt, Untergewicht, Normalgewicht, Uebergewicht, Adipositas, Adipositas_schwer
    }

    public enum Geschlecht
    {
        divers, maennlich, weiblich
    }

    class WHtR
    {
        private const int ZuschlagAlterVon = 40;
        private const int ZuschlagAlterBis = 49;
        private const double ZuschlagAlterWert = 0.01;

        public WHtR(int alter, Geschlecht geschlecht, double umfang, double groesse)
        {
            Alter = alter;
            Geschl = geschlecht;
            Umfang = umfang;
            Groesse = groesse;
        }

        private double Umfang { get; }
        private double Groesse { get; }
        private int Alter { get; }
        private Geschlecht Geschl { get; }
        private double WHtR_Index
        {
            get
            {
                var index = Math.Round(Umfang / Groesse, 2);
                var korrekturWeibl = index switch
                {
                    var i when i < 0.34 => 0,
                    var i when i >= 0.34 && i <= 0.45 => 0.01,
                    var i when i >= 0.46 && i <= 0.51 => 0.03,
                    var i when i >= 0.52 && i <= 0.63 => 0.04,
                    var i when i > 0.63 => 0.05,
                    _ => 0
                };
                var korrekturAlter = Alter >= ZuschlagAlterVon && Alter <= ZuschlagAlterBis ? Alterszuschlag : 0;
                return index - Math.Round((Geschl == Geschlecht.weiblich ? korrekturWeibl : 0) + korrekturAlter, 2);
            }
        }

        private double Alterszuschlag => (Alter - ZuschlagAlterVon) * ZuschlagAlterWert;

        private Gewichtskategorie WHtR_Gewichtskategorie
        {
            get
            {
                return Alter switch
                {
                    int a when a < 15 =>
                        _ = WHtR_Index switch
                        {
                            var i when i < 0.34 => Gewichtskategorie.Untergewicht,
                            var i when i >= 0.34 && i <= 0.45 => Gewichtskategorie.Normalgewicht,
                            var i when i >= 0.46 && i <= 0.51 => Gewichtskategorie.Uebergewicht,
                            var i when i >= 0.52 && i <= 0.63 => Gewichtskategorie.Adipositas,
                            var i when i > 0.63 => Gewichtskategorie.Adipositas_schwer,
                            _ => Gewichtskategorie.Unbekannt
                        },
                    int a when a >= 15 && a <= 49 =>
                        _ = WHtR_Index  switch
                        {
                            var i when i < 0.4 => Gewichtskategorie.Untergewicht,
                            var i when i >= 0.4 && i <= 0.5 => Gewichtskategorie.Normalgewicht,
                            var i when i >= 0.51 && i <= 0.56 => Gewichtskategorie.Uebergewicht,
                            var i when i >= 0.57 && i <= 0.68 => Gewichtskategorie.Adipositas,
                            var i when i > 0.68 => Gewichtskategorie.Adipositas_schwer,
                            _ => Gewichtskategorie.Unbekannt
                        },
                    int a when a >= 50 =>
                        _ = WHtR_Index switch
                        {
                            var i when i < 0.4 => Gewichtskategorie.Untergewicht,
                            var i when i >= 0.4 && i <= 0.6 => Gewichtskategorie.Normalgewicht,
                            var i when i >= 0.61 && i <= 0.66 => Gewichtskategorie.Uebergewicht,
                            var i when i >= 0.67 && i <= 0.78 => Gewichtskategorie.Adipositas,
                            var i when i > 0.78 => Gewichtskategorie.Adipositas_schwer,
                            _ => Gewichtskategorie.Unbekannt
                        },
                    _ => Gewichtskategorie.Unbekannt
                };
            }
        }
        public override string ToString() => $"WHtR-Index: {WHtR_Index:F2}; Kategorie: {WHtR_Gewichtskategorie}";
    }
}

Kommentare:

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

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