C# :: Aufgabe #317

2 Lösungen Lösungen öffentlich

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ß

Lösungen:

vote_ok
von DerSpletti (110 Punkte) - 26.05.2020 um 21:19 Uhr
Quellcode ausblenden C#-Code
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;
        }

        
    }
}
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}";
    }
}