C++ :: Aufgabe #290
3 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:

#include <iostream> using namespace std; int main() { int scope, higth, age; double whtr_value; int sex; cout<< "Bitte geben Sie ihr Alter ein"<<endl; cin>> age; cout<< "Bitte geben Sie ihr Geschlecht ein (0 - maennlich / 1 - weiblich)"<<endl; cin>> sex; cout<< "Bitte geben Sie ihr Teilumfang ein (in cm)"<<endl; cin>> scope; cout<< "Bitte geben Sie ihre Körpergrößer ein (in cm)"<<endl; cin>> higth; whtr_value = (double)scope/(double)higth; whtr_value =whtr_value*100+0.5; whtr_value = (int)whtr_value; whtr_value = whtr_value/100; cout<<"Ihr Wert beträgt " << whtr_value << endl; if(age>15) { if(sex == 0) { if(whtr_value <= 0.34) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an starken Untergewicht"<< endl; else if(0.35<=whtr_value && whtr_value<=0.42) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an Untergewicht"<< endl; else if(0.43<=whtr_value && whtr_value<=0.52) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, sind Sie normalgewichtig"<< endl; else if(0.53<=whtr_value && whtr_value<=0.57) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, sind Sie uebergewichtig"<< endl; else if(0.58<=whtr_value && whtr_value<=0.62) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an Adipositas"<< endl; else if(0.63<=whtr_value) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an extremer Adipositas"<< endl; } else { if(whtr_value <= 0.34) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an starken Untergewicht"<< endl; else if(0.36<=whtr_value && whtr_value<=0.41) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an Untergewicht"<< endl; else if(0.42<=whtr_value && whtr_value<=0.48) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, sind Sie normalgewichtig"<< endl; else if(0.49<=whtr_value && whtr_value<=0.53) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, sind Sie uebergewichtig"<< endl; else if(0.54<=whtr_value && whtr_value<=0.57) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an Adipositas"<< endl; else if(0.58<=whtr_value) cout<< "Wenn man den Wert nur nach dem Geschlecht einordnen würde, leiden Sie an extremer Adipositas"<< endl; } } else if(age<=15) { if(whtr_value <= 0.34) cout<< "Sie leiden an starken Untergewicht"<< endl; else if(0.35<=whtr_value && whtr_value<=0.45) cout<< "Sie leiden an Untergewicht"<< endl; else if(0.46<=whtr_value && whtr_value<=0.51) cout<< "SIe sind normalgewichtig"<< endl; else if(0.52<=whtr_value && whtr_value<=0.63) cout<< "Sie sind uebergewichtig"<< endl; else if(0.64<=whtr_value) cout<< "Sie leiden an extremer Adipositas"<< endl; } if(age>15 && age<=39) { if(whtr_value < 0.4) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Untergewicht"<< endl; else if(0.4<=whtr_value && whtr_value<=0.5) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie normalgewichtig"<< endl; else if(0.51<=whtr_value && whtr_value<=0.56) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie uebergewichtig"<< endl; else if(0.57<=whtr_value && whtr_value<=0.68) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Adipositas"<< endl; else if(0.68<whtr_value) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an extremer Adipositas"<< endl; } else if(age>=40 && age<=49) { if(whtr_value < 0.4) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Untergewicht"<< endl; else if(0.4+(age-40)*0.01<=whtr_value && whtr_value<=0.5+(age-40)*0.01) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie normalgewichtig"<< endl; else if(0.51+(age-40)*0.01<=whtr_value && whtr_value<=0.56+(age-40)*0.01) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie uebergewichtig"<< endl; else if(0.57+(age-40)*0.01<=whtr_value && whtr_value<=0.68+(age-40)*0.01) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Adipositas"<< endl; else if(0.68+(age-40)*0.01<whtr_value) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an extremer Adipositas"<< endl; } else if(age>50) { if(whtr_value < 0.4) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Untergewicht"<< endl; else if(0.5<=whtr_value && whtr_value<=0.6) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie normalgewichtig"<< endl; else if(0.61<=whtr_value && whtr_value<=0.66) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, sind Sie uebergewichtig"<< endl; else if(0.62<=whtr_value && whtr_value<=0.78) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an Adipositas"<< endl; else if(0.78<whtr_value) cout<< "Wenn man den Wert nur nach dem Alter einordnen würde, leiden Sie an extremer Adipositas"<< endl; } }

#include <iostream> using namespace std; void classifybysex(double whtr) { char c; cout << "\nGeschlecht eingeben:\n"; cout << "Männlich > 15 Jahre (m)\n"; cout << "Weiblich > 15 Jahre (w)\n"; cout << "Kind < 15 Jahre (k)\n"; cout << "Eingabe: "; cin >> c; cout << "\n"; switch(c) { case 'm': if(whtr <= 0.34) { cout << "Starkes Untergewicht\n"; } else if(whtr >= 0.35 && whtr <= 0.42) { cout << "Untergewicht\n"; } else if(whtr >= 0.43 && whtr <= 0.52) { cout << "Normalgewicht\n"; } else if(whtr >= 0.53 && whtr <= 0.57) { cout << "Übergewicht\n"; } else if(whtr >= 0.58 && whtr <= 0.62) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } break; case 'w': if(whtr <= 0.34) { cout << "Starkes Untergewicht\n"; } else if(whtr >= 0.36 && whtr <= 0.41) { cout << "Untergewicht\n"; } else if(whtr >= 0.42 && whtr <= 0.48) { cout << "Normalgewicht\n"; } else if(whtr >= 0.49 && whtr <= 0.53) { cout << "Übergewicht\n"; } else if(whtr >= 0.54 && whtr <= 0.57) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } break; case 'k': if(whtr <= 0.34) { cout << "Starkes Untergewicht\n"; } else if(whtr >= 0.35 && whtr <= 0.45) { cout << "Untergewicht\n"; } else if(whtr >= 0.46 && whtr <= 0.51) { cout << "Normalgewicht\n"; } else if(whtr >= 0.52 && whtr <= 0.63) { cout << "Übergewicht\n"; } else { cout << "Extreme Adipositas\n"; } break; default: cout << "Falsche Eingabe\n"; } } void classifybyage(double whtr) { int age; cout << "\nAlter eingeben: "; cin >> age; cout << "\n"; if(age < 15) { if(whtr <= 0.34) { cout << "Untergewicht\n"; } else if(whtr >= 0.35 && whtr <= 0.45) { cout << "Normalgewicht\n"; } else if(whtr >= 0.46 && whtr <= 0.51) { cout << "Übergewicht\n"; } else if(whtr >= 0.52 && whtr <= 0.63) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } } else if(age >= 15 && age <= 39) { if(whtr < 0.4) { cout << "Untergewicht\n"; } else if(whtr >= 0.4 && whtr <= 0.5) { cout << "Normalgewicht\n"; } else if(whtr >= 0.51 && whtr <= 0.56) { cout << "Übergewicht\n"; } else if(whtr >= 0.57 && whtr <= 0.68) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } } else if(age >= 40 && age <= 50) { int a = age; while(a <= 50) { whtr += 0.01; a++; } if(whtr < 0.4) { cout << "Untergewicht\n"; } else if(whtr >= 0.4 && whtr <= 0.5) { cout << "Normalgewicht\n"; } else if(whtr >= 0.51 && whtr <= 0.56) { cout << "Übergewicht\n"; } else if(whtr >= 0.57 && whtr <= 0.68) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } } else if(age > 50) { if(whtr < 0.4) { cout << "Untergewicht\n"; } else if(whtr >= 0.5 && whtr <= 0.6) { cout << "Normalgewicht\n"; } else if(whtr >= 0.61 && whtr <= 0.66) { cout << "Übergewicht\n"; } else if(whtr >= 0.67 && whtr <= 0.78) { cout << "Adipositas\n"; } else { cout << "Extreme Adipositas\n"; } } } double calcwhtr(double ws, double h) { return ws / h; } int main() { char query, c; double waistsize, height, whtr; do { cout << "Klassifikation nach Geschlecht (g)\n"; cout << "Klassifikation nach Alter (a)\n"; cout << "Auswahl: "; cin >> query; cout << "\n"; switch(query) { case 'g': cout << "Tailienumfang (in cm): "; cin >> waistsize; cout << "Körpergröße (in cm): "; cin >> height; whtr = calcwhtr(waistsize, height); classifybysex(whtr); break; case 'a': cout << "Tailienumfang (in cm): "; cin >> waistsize; cout << "Körpergröße (in cm): "; cin >> height; whtr = calcwhtr(waistsize, height); classifybyage(whtr); break; default: cout << "Falsche Eingabe\n\n"; break; } cout << "\nNächste Eingabe? (j/n): "; cin >> c; cout << "\n"; } while((query != 'a' || query != 'g') && c != 'n'); }
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"; } }