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

#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ß
Es sollen sowohl das Geschlecht (m/w) als auch das Kindesalter bzw. der Altersfaktor für Erwachsene berücksichtigt werden.
Viel Spaß
#2

von JKooP (18090 Punkte)
- 02.11.2020 um 16:32 Uhr
// NET Core 3.x
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
Seite 1 von 0
1