Laden...

Wäre das Ermitteln von Zahlenreichweite mit switch möglich?

Erstellt von Tom.toString vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.810 Views
T
Tom.toString Themenstarter:in
3 Beiträge seit 2010
vor 13 Jahren
Wäre das Ermitteln von Zahlenreichweite mit switch möglich?

Mahlzeit zusammen! Erstmal hoff ich das ich hier trotz dem Hinweis keine "Anfänger"-Fragen stellen, richtig bin..

Ich häng grad in meinem BMI-Programm fest, da ich vom denken her nicht wirklich weiterkomme.

Ich hab einen BMI errechnet und möchte nun prüfen in welcher Reichweite er liegt d.h.

Alter 18-24 :
< 19 Untergewicht
19-24 Normalgewicht
24-29 Übergewicht
29-39 Fettleibigkeit
> 39 starke Fettleibigkeit

komme ich da mit Switch weiter ohne ein endloslanges


static string bmiTable(int index){
     switch(index)
{
case 18: Console.WriteLine("zudünn");
break;     
case 19: Console.WriteLine("zudünn");	
break;
// case 20, case 21... etc <<
default: Console.WriteLine("Unbekannter BMI");
break;
}
return index.ToString();
}

schreiben zu müssen. Gibt es Möglichkeiten eine Reichweite festzulegen? z.b.

case 20-25: mach etwas;

oder muss ich da tatsächlich mit "if - else if" arbeiten?

LG
Tom

2.891 Beiträge seit 2004
vor 13 Jahren

case 20-25: mach etwas;

Nein, mit C# nicht.

oder muss ich da tatsächlich mit "if - else if" arbeiten?

Ja, was aber doch nicht weiter schlimm ist.


if (bmi<19)
   return "Untergewicht";
else if (bmi<24)
   return "Normalgewicht";
else if (bmi<29)
 ...
else
   return "starke Fettleibigkeit";

Es wäre sicher auch eine Überlegung wert, die Kategorien als Enum zu realisieren.

Gruß,
dN!3L

Gelöschter Account
vor 13 Jahren

du musst das zwangsläufig mit if-else machen, da bei korrekter BMI berechnung fließkommazahlen entstehen und die sind mi catch.... schwer abzugreifen.

des weiteren sind in diesem zusammenhang vergleichsfehler zu erwarten: [FAQ] Double und Float: Fehler beim Vergleich und Rundungsfehler

T
Tom.toString Themenstarter:in
3 Beiträge seit 2010
vor 13 Jahren

Vielen Dank für die zügigen Antworten.

zum Thema "enum", da werd ich mich nachher mal reinknien wie genau das funktioniert.

was die Ungenauigkeiten angeht, hab ich das nun so verstanden das es bei solchen Berechnungen besser wäre direkt auf decimal zurückzugreifen?

Gruß
Tom

J
3.331 Beiträge seit 2006
vor 13 Jahren

was die Ungenauigkeiten angeht, hab ich das nun so verstanden das es bei solchen Berechnungen besser wäre direkt auf decimal zurückzugreifen?

Nein, eher nicht. Beim BMI kommt es (anders als in der Buchhaltung) nicht auf Genauigkeit an; da passen double-Werte. Du musst nur bei den Vergleichen aufpassen, also dich nicht auf exakte Gleichheit verlassen.

Jürgen

F
10.010 Beiträge seit 2004
vor 13 Jahren

Naja, beim BMI reichen eigentlich sogar integer Werte.

Wobei BMI ansich ziemlich unsinnig ist.
Ich habe z.b. so um die 28, also übergewichtig.
Ich kenne aber keinen der meint das ich zuviel habe, nicht mal Gesundheitsfanatiker.
Habe halt schwere Füsse.

Gelöschter Account
vor 13 Jahren

bmi ist sehr sinnig. es dient zur klassifikation. das bei einer klassifikation, angewendet auf biologische parameter, nich alles und jedes korrekt und absolut erfasst wird, ist normal. es geht dabei nur um schriftliches, nachweisbares und fest definiertes festhalten einer gegebenheit.

T
Tom.toString Themenstarter:in
3 Beiträge seit 2010
vor 13 Jahren

Ich werde es dann mal mit der if else if Variante probieren. Enum versteh ich irgendwie noch nicht oder, was wahrscheinlicher ist wende ich es falsch an wenn ich dort schreibe


public enum Untergewicht{

0,
1,
2,
3,
//....
19
}

Werd mir aber nochmal genauer die :rtfm: um die Ohren hauen.

Gelöschter Account
vor 13 Jahren

es war eher so gemeint:


enum Gewichtsklasse
{
Untergewicht,
Normalgewicht,
Übergewicht, ...
}

edit:

Naja, beim BMI reichen eigentlich sogar integer Werte.

im gesundheitsbereich wären die buchhalter und die pflegekräft nicht so glücklich... denn dort entscheidet die klassifikation je nach eingeführten system, wieviel zeit sie dem patienten berechnen können. erstmal klingt es ja nciht so schlimm, da ja auf der allgemeinen klassifikation ja eh nur ganze zahlen verwendet werden aber im gesundheitsbereich habe ich auch schon systeme gesehen, die mit kommazahlen ein feineres klassifikationssystem verwenden.

2.891 Beiträge seit 2004
vor 13 Jahren

Enum versteh ich irgendwie noch nicht oder, was wahrscheinlicher ist wende ich es falsch an wenn ich dort schreibe[...]

Ja, ist so falsch 😛 Und nochmal: Für Bereichsabfragen kannst du kein switch-case benutzen.
Enums kannst du (in diesem Fall) als Rückgabewert benutzen (statt string), da du ja die BMI-Kategorie ermitteln willst.

Gruß,
dN!3L

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Tom.toString,

num versteh ich irgendwie noch nicht

bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Wie enums funktionieren und wie man sie verwendet, setzten wir als bekannt voraus.

herbivore