Kezdőoldal » Számítástechnika » Programozás » C# segítséget kérnék! Mi nem...

C# segítséget kérnék! Mi nem jó a feladatomban?

Figyelt kérdés

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();



2015. nov. 30. 20:13
 1/5 Tengor ***** válasza:

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.

2015. nov. 30. 20:23
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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

2015. nov. 30. 20:31
 3/5 Tengor ***** válasza:

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.

2015. nov. 30. 20:35
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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);

2015. dec. 1. 11:31
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Igen, kedves harmadik! Neked van igazad. Tegnap este rájöttem, hogy a forráskódba kell ponttal írni, a kurzor meg csak vesszővel fogadja el. :) Mik vannak... :)
2015. dec. 1. 20:05

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!