C++ :: Aufgabe #290

3 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 dewe (460 Punkte) - 23.05.2020 um 14:13 Uhr
Quellcode ausblenden C-Code
#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;
    }
}
vote_ok
von basic (1310 Punkte) - 27.09.2020 um 22:30 Uhr
Quellcode ausblenden C-Code
#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');
}
vote_ok
von JKooP (18090 Punkte) - 07.01.2021 um 19:38 Uhr
C++ 17
WHtR.main
Quellcode ausblenden C-Code
#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
Quellcode ausblenden C-Code
#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
Quellcode ausblenden C-Code
#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";
    }
}