C# :: Aufgabe #317
2 Lösungen
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ß
Lösungen:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Testneu
{
public partial class Form1 : Form
{
string Geschlecht = null;
public Form1()
{
InitializeComponent();
}
private void BauchEin_ValueChanged(object sender, EventArgs e)
{
}
private void GrößeEin_ValueChanged(object sender, EventArgs e)
{
}
private void Männlich_CheckedChanged(object sender, EventArgs e)
{
if (Männlich.Checked)
{
Geschlecht = "Männlich";
}
}
private void Weiblich_CheckedChanged(object sender, EventArgs e)
{
if (Weiblich.Checked)
{
Geschlecht = "Weiblich";
}
}
private void Alter_ValueChanged(object sender, EventArgs e)
{
}
private void BerechneBtn_Click(object sender, EventArgs e)
{
if(Convert.ToInt32(BauchEin.Value) == 0)
{
MessageBox.Show("Bitte gib dein Gewicht an.");
return;
}
if(Convert.ToInt32(GrößeEin.Value) == 0)
{
MessageBox.Show("Bitte gib deine Größe an.");
return;
}
if(Geschlecht == null)
{
MessageBox.Show("Bitte gib dein Geschlecht an.");
return;
}
if (Convert.ToInt32(Alter.Value) == 0)
{
MessageBox.Show("Bitte gib dein Alter an ");
return;
}
double WHtR = Berechnung(Convert.ToInt32(BauchEin.Value), Convert.ToInt32(GrößeEin.Value));
string Klasse = Klassifikation(WHtR, Geschlecht, Convert.ToInt32(Alter.Value));
MessageBox.Show($"Dein WHtR liegt {WHtR}\n" +
$"Du hast {Klasse}");
}
public double Berechnung(double Bauch, double Größe)
{
double Ergebnis = Bauch / Größe;
return Ergebnis;
}
public string Klassifikation(double WHtR, string Geschlecht, double Alter)
{
string Klassifikation = null;
if (Geschlecht == "Männlich")
{
if (WHtR < 0.34)
{
Klassifikation = "Starkes Untergewicht";
}
else if (WHtR >= 0.34 && WHtR <= 0.42)
{
Klassifikation = "Untergewicht";
}
else if (WHtR >= 0.43 && WHtR <= 0.52)
{
Klassifikation = "Normalgewicht";
}
else if (WHtR >= 0.53 && WHtR <= 0.57)
{
Klassifikation = "Übergewicht";
}
else if (WHtR >= 0.58 && WHtR <= 0.62)
{
Klassifikation = "Adipositas";
}
else
{
Klassifikation = "Massive Adipositas";
}
}
if (Geschlecht == "Weiblich")
{
if (WHtR < 0.34)
{
Klassifikation = "Starkes Untergewicht";
}
else if (WHtR >= 0.34 && WHtR <= 0.41)
{
Klassifikation = "Untergewicht";
}
else if (WHtR >= 0.42 && WHtR <= 0.48)
{
Klassifikation = "Normalgewicht";
}
else if (WHtR >= 0.49 && WHtR <= 0.53)
{
Klassifikation = "Übergewicht";
}
else if (WHtR >= 0.54 && WHtR <= 0.57)
{
Klassifikation = "Adipositas";
}
else
{
Klassifikation = "Massive Adipositas";
}
}
if (Alter >= 15)
{
if (WHtR < 0.34)
{
Klassifikation = "Starkes Untergewicht";
}
else if (WHtR >= 0.34 && WHtR <= 0.45)
{
Klassifikation = "Untergewicht";
}
else if (WHtR >= 0.46 && WHtR <= 0.51)
{
Klassifikation = "Normalgewicht";
}
else if (WHtR >= 0.52 && WHtR <= 0.63)
{
Klassifikation = "Übergewicht";
}
else
{
Klassifikation = "Massive Adipositas";
}
}
return Klassifikation;
}
}
}
// 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}";
}
}
