C++ :: Aufgabe #290 :: Lösung #3
3 Lösungen

#290
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ß
#3

von JKooP (18090 Punkte)
- 07.01.2021 um 19:38 Uhr
C++ 17
WHtR.main
C-Code
WHtR.h
C-Code
WHtR.cpp
C-Code
WHtR.main

#include <iostream> #include <string> #include "WHtR.h" #include <iomanip> int main() { WHtR whtr(45, Geschlecht::maennlich, 100, 185); std::cout << "Index: " << std::setprecision(2) << whtr.get_whtr_index() << "\tKategorie: " << whtr.get_whtr_gewichtskategorie() << std::endl; }
WHtR.h

#pragma once #include <string> enum class Geschlecht { divers, maennlich, weiblich }; class WHtR { public: WHtR(int alter, Geschlecht geschlecht, double umfang, double groesse); double get_whtr_index(); std::string get_whtr_gewichtskategorie(); private: const double ZUSCHLAG_ALTER_VON{ 40 }; const double ZUSCHLAG_ALTER_BIS{ 49 }; const double ZUSCHLAG_ALTER_WERT{ 0.01 }; double m_umfang; double m_groesse; int m_alter; Geschlecht m_geschlecht; double get_whtr_alterszuschlag(); };
WHtR.cpp

#include "WHtR.h" #include <string> WHtR::WHtR(int alter, Geschlecht geschlecht, double umfang, double groesse) { m_alter = alter; m_geschlecht = geschlecht; m_umfang = umfang; m_groesse = groesse; } double WHtR::get_whtr_index() { auto i{ m_umfang / m_groesse }; // Index auto kw{ 0.0 }; // Korrektur weiblich if (i < 0.34) kw = 0; else if (i >= 0.34 && i <= 0.45) kw = 0.01; else if (i >= 0.46 && i <= 0.51) kw = 0.03; else if (i >= 0.52 && i <= 0.63) kw = 0.04; else kw = 0.05; auto ka{ m_alter >= ZUSCHLAG_ALTER_VON && m_alter <= ZUSCHLAG_ALTER_BIS ? get_whtr_alterszuschlag() : 0 }; // Korrektur Alter return i - (m_geschlecht == Geschlecht::weiblich ? kw : 0) + ka; } double WHtR::get_whtr_alterszuschlag() { return (m_alter - ZUSCHLAG_ALTER_VON) * ZUSCHLAG_ALTER_WERT; } std::string WHtR::get_whtr_gewichtskategorie() { auto i{ get_whtr_index() }; // Index if (m_alter < 15) { if (i < 0.34) return "Untergewicht"; else if (i >= 0.34 && i <= 0.45) return "Normalgewicht"; else if (i >= 0.46 && i <= 0.51) return "Uebergewicht"; else if (i >= 0.52 && i <= 0.63) return "Adipositas"; else return "schwere Adipositas"; } else if (m_alter >= 15 && m_alter <= 49) { if (i < 0.4) return "Untergewicht"; else if (i >= 0.4 && i <= 0.5) return "Normalgewicht"; else if (i >= 0.51 && i <= 0.56) return "Uebergewicht"; else if (i >= 0.57 && i <= 0.68) return "Adipositas"; else return "schwere Adipositas"; } else { if (i < 0.4) return "Untergewicht"; else if (i >= 0.4 && i <= 0.6) return "Normalgewicht"; else if (i >= 0.61 && i <= 0.66) return "Uebergewicht"; else if (i >= 0.67 && i <= 0.78) return "Adipositas"; else return "schwere Adipositas"; } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1