krimol Skrevet 8. november 2010 Del Skrevet 8. november 2010 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
GeirGrusom Skrevet 8. november 2010 Del Skrevet 8. november 2010 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
krimol Skrevet 8. november 2010 Forfatter Del Skrevet 8. november 2010 Må no være en lettere metode? No i den duren her: If ( BMI 15 > 20 ) = Undervektig klasse 1 så er ikke der en annen koding? : ) Takk for svaret : ) Lenke til kommentar
GeirGrusom Skrevet 8. november 2010 Del Skrevet 8. november 2010 (endret) 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 8. november 2010 av GeirGrusom Lenke til kommentar
krimol Skrevet 8. november 2010 Forfatter Del Skrevet 8. november 2010 Glimrende! Tusen takk for hjelpen ! Lenke til kommentar
krimol Skrevet 8. november 2010 Forfatter Del Skrevet 8. november 2010 Hvordan begrenser jeg antall desimaler i svaret på BMI? No får jeg: 26,666666666666666666666666667 Vil ha 26,67 ? Lenke til kommentar
Degeim Skrevet 11. november 2010 Del Skrevet 11. november 2010 (endret) Prøv med bmi.ToString("n2"), eller bruk eventuelt Math.Round()-funksjonen. Endret 11. november 2010 av Degeim Lenke til kommentar
HDSoftware Skrevet 14. november 2010 Del Skrevet 14. november 2010 (endret) 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 14. november 2010 av HDSoftware Lenke til kommentar
GeirGrusom Skrevet 15. november 2010 Del Skrevet 15. november 2010 (endret) 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 15. november 2010 av GeirGrusom Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå