C# segítséget kérnék! Mi nem jó a feladatomban?
Számoljuk ki a testtömeg indexünket. Jelezzük ki melyik kategóriába tartozunk. A testtömeg index képlete: BMI = testsúly (kg) / magasság^2 (m2). Ha a BMI
kisebb mint 16 akkor súlyosan sovány
kisebb mint 17, akkor mérsékelt sovány
kisebb mint 18.5, akkor enyhe sovány
kisebb mint 25, akkor normáls
kisebb mint 30, akkor túlsúlyos,
kisebb mint 35, akkor I. fokú elhízás
kisebb mint 40, akkor II. fokú elhízás
egyéb értékek esetén III. fokú elhízás
Így próbáloztam, de az eredmény mindig az, hogy mindenre azt írja ki, hogy súlyosan sovány vagy:
Console.WriteLine("Most kiszámolom a testtömeg indexedet! Kérlek, add megy a súlyod (kilogrammban)!");
string suly = Console.ReadLine();
double kg = double.Parse(suly);
Console.WriteLine("Add meg a magasságod is! (centiméterben)");
string magassag = Console.ReadLine();
double cm = double.Parse(magassag);
if (kg / Math.Pow(cm, 2) < 16) Console.WriteLine("Súlyosan sovány vagy");
else if (16 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 17) Console.WriteLine("Mérsékelten sovány vagy");
else if (17 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 18.5) Console.WriteLine("Enyhén sovány vagy");
else if (18.5 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 25) Console.WriteLine("Normális a súlyod");
else if (25 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 30) Console.WriteLine("Túlsúlyos vagy");
else if (30 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 35) Console.WriteLine("I. fokú elhízásod van");
else if (35 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) < 40) Console.WriteLine("II. fokú elhízásod van");
else if (40 < kg / Math.Pow(cm, 2) && kg / Math.Pow(cm, 2) > 40) Console.WriteLine("III. fokú elhízásod van");
Console.ReadKey();
A képlet m-t ír, de cm-rel számolsz.
100 centis törpének a súlyát is 100000-el osztod el, az persze, hogy kisebb 16-nál.
Igen, tényleg...
De ha méterben számolok, és méterben kérem be az adatokat, úgy el se fogadja.
Beírtam pl a súlyhoz, hogy 120 és a magassághoz, hogy 1.70 és így meg nem is megy tovább a program. :S
Vagy derítsd ki, hogy miért áll ott meg, vagy a bekért cm-et egy osztással váltsd át m-re és azzal számolj!
Tanács:
a.) négyzetre emelni szorzással célravezetőbb, mint a Math.Pow-t használni.
b.) felesleges a kg/Math.Pow(cm,2) értéket minden vizsgálatkor kiszámolni, mert minden vizsgálatnál (kb.) ugyan az lesz az értéke. Elég egyszer kiszámolni, változóban tárolni és utána azt a változót használni.
Lehet, hogy azért nem tudja számmá konvertálni az "1.7"-et, mert hivatalosan magyarul vesszővel jelöljük a tizedes vesszőt, és nem ponttal.
Próbáld meg így beírni: "1,7", vagy használd a parszolást így: double.Parse(magassag, CultureInfo.InvariantCulture);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!