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
