Gå til innhold

Anbefalte innlegg

Hei!

Har laget en BMI Kalkulator. Så no skal jeg lage noen betingelser.

Der Bmi : mellom 15 og 20 skal gi svaret Undervektig klasse 1

mellom 20 og 25 : Normal

mellom 25 og 30 : Overvektig klasse 1.

 

Hvordan blir skal jeg kunne få det til slik at det kjem opp hvilke vekt klasse en hører til?

 

her er koden:

protected void btnBMI_Click(object sender, EventArgs e)

{

Decimal hoyde = Convert.ToDecimal(txtHoyde.Text);

Decimal vekt = Convert.ToDecimal(txtVekt.Text);

Decimal BMI = vekt / (hoyde * hoyde);

 

labResultat.Text = txtNavn.Text + "s" + " BMI er " + BMI + ".";

Lenke til kommentar
Videoannonse
Annonse

public class Bounds
{
 public decimal LowerBounds { get; set; }
 public decimal UpperBounds { get; set; }
 public string Name { get; set; }

 public Bounds(decimal lower, decimal upper, string name)
 {
   UpperBounds = upper; LowerBounds = lower; Name = name;
 }
}

static readonly List<Bounds> bounds = new List<Bounds(
new Bounds[] {new Bounds(15, 20, "undervektig klasse 1"),
new Bounds(20, 25, "normal"),
new Bounds(25, 30, "overvektig klasse 1")
});

public string FindBmiClass(decimal bmi)
{
 var sel = from item in bounds where item.LowerBounds <= bmi && item.UpperBounds > bmi select item;
 var item = sel.FirstOrDefault();
 if(item != null)
   return item.Name;
 else
   return "";
}

Noe slikt kanskje?

Lenke til kommentar

Joda, min var bare laget for at det skulle være enklere å legge til eller fjerne vektklasser, samt være enklere å debugge dersom noe er feil.

 

Et enklere alternativ:

 

string klasse;
if(bmi >= 15 && bmi < 20)
 klasse = "undervektig klasse 1";
else if(bmi >= 20 && bmi < 25)
 klasse = "normal";
else if(bmi >= 25 && bmi < 30)
 klasse = "overvektig klasse 1";
else
 klasse = "udefinert";

 

Men jeg er ingen fan av hardkoding.

Endret av GeirGrusom
Lenke til kommentar

Joda, min var bare laget for at det skulle være enklere å legge til eller fjerne vektklasser, samt være enklere å debugge dersom noe er feil.

 

Et enklere alternativ:

 

string klasse;
if(bmi >= 15 && bmi < 20)
 klasse = "undervektig klasse 1";
else if(bmi >= 20 && bmi < 25)
 klasse = "normal";
else if(bmi >= 25 && bmi < 30)
 klasse = "overvektig klasse 1";
else
 klasse = "udefinert";

 

Men jeg er ingen fan av hardkoding.

Haha, her er jeg 100% enig med deg, men dette er også akkurat det Joe Armstrong (http://en.wikipedia.org/wiki/Joe_Armstrong_(programming)) mener når han i sin kritikk av OOP sier "Du ville ha en banan, det du fikk var en gorilla, som holder bananen, og hele jungelen på kjøpet"...

Endret av HDSoftware
Lenke til kommentar

Joda, min var bare laget for at det skulle være enklere å legge til eller fjerne vektklasser, samt være enklere å debugge dersom noe er feil.

 

Et enklere alternativ:

 

string klasse;
if(bmi >= 15 && bmi < 20)
 klasse = "undervektig klasse 1";
else if(bmi >= 20 && bmi < 25)
 klasse = "normal";
else if(bmi >= 25 && bmi < 30)
 klasse = "overvektig klasse 1";
else
 klasse = "udefinert";

 

Men jeg er ingen fan av hardkoding.

Haha, her er jeg 100% enig med deg, men dette er også akkurat det Joe Armstrong (http://en.wikipedia.org/wiki/Joe_Armstrong_(programming)) mener når han i sin kritikk av OOP sier "Du ville ha en banan, det du fikk var en gorilla, som holder bananen, og hele jungelen på kjøpet"...

Korrekt. Men en endring ett sted, vil gjelde alle steder. hva hvis du skriver <= istedet for >= ett sted? Kjempe mye vanskeligere å finne ut av, og rette.

 

Mesteparten av koden jeg skrev, er jo ikke prgramkode, men datatype definisjoner.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...