Kezdőoldal » Számítástechnika » Programozás » Segítség program hibában?

Segítség program hibában?

Figyelt kérdés

Helo!

Elkezdtem önerőből C#-ot tanulni (egyetemen volt C++ de az már elég rég volt), viszont a kicsiny programom nem akar lefutni és nem tudom miért.

Jelenleg másodfokú függvényt akarok kiszámoltatni vele, de az istenért nem tudom rávenni hogy kiírja az eredményt, mindig NaN-t ír ki.


kép:

[link]


A kód maga így néz ki:

Console.WriteLine("3. Feladat:");

Console.WriteLine("Adja meg a kívánt adatokat az a*x^2 + b*x + c = 0 másodfokú egyenlet kiszámításához");

double a;

double b;

double c;

string A;

string B;

string C;

Console.WriteLine();

Console.WriteLine("Adja meg az 'a' értékét");

A = Console.ReadLine();

if (!double.TryParse(A, out a))

{

Console.WriteLine("Hibás paraméter!");

Console.WriteLine("A kilépéshez nyomjon meg egy gombot");

Console.ReadKey();

Environment.Exit(2);

}

Console.WriteLine();

Console.WriteLine("Adja meg a 'b' értékét");

B = Console.ReadLine();

if (!double.TryParse(B, out b))

{

Console.WriteLine("Hibás paraméter!");

Console.WriteLine("A kilépéshez nyomjon meg egy gombot");

Console.ReadKey();

Environment.Exit(3);

}

Console.WriteLine();

Console.WriteLine("Adja meg a 'c' értékét");

C = Console.ReadLine();

if (!double.TryParse(C, out c))

{

Console.WriteLine("Hibás paraméter!");

Console.WriteLine("A kilépéshez nyomjon meg egy gombot");

Console.ReadKey();

Environment.Exit(4);

}

double elso_resz;

elso_resz = Math.Sqrt(Math.Pow(b,2)-4*a*c)/(2*a);

double elso_x;

elso_x = -b / (2 * a) + elso_resz;

double masodik_x;

masodik_x = -b / (2 * a) + elso_resz;

Console.WriteLine("Az x1 értéke: "+ elso_x);

Console.WriteLine("Az x2 értéke: "+ masodik_x);

Console.WriteLine("A kilépéshez nyomjon meg egy gombot");

Console.ReadKey();


Tudom sok mindent lehetne rövidíteni static double-ökkel, de az jelenleg csak megzavarna :)


Előre is köszönöm a segítséget.



2016. okt. 29. 13:32
1 2
 1/11 anonim ***** válasza:

Olyan paramétereket adsz meg, amivel valóba 2 valós megoldása van az egyenletnek?

Debugold.

2016. okt. 29. 14:03
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:
Debug nulla hibát ír.
2016. okt. 29. 14:05
 3/11 A kérdező kommentje:

Nem tudott gyököt vonni miközben négyzetre emeltem, kicsit módosítottam:


double szamolas_egy;

szamolas_egy =Math.Pow(b, 2)-(4*a*c);

var szamolas_ketto = Math.Sqrt(szamolas_egy)/(2*a);

var x_egy = (-b - szamolas_ketto)/(2*a);

var x_ketto = (-b + szamolas_ketto) /(2*a);

var x_elso = Math.Round(x_egy , 2);

var x_masodik = Math.Round(x_ketto, 2);

Console.WriteLine("Az X1 értéke: {0}",x_elso);

Console.WriteLine("Az X2 értéke: {0}",x_masodik);

Console.WriteLine("A kilépéshez nyomjon meg egy gombot");

Console.ReadKey();

Így már szépen lefut, VISZONT a mínusz előjelet nem veszi be, tehát ha mondjuk én C-nek -4et adok meg akkor is kivonás lesz a b-ből a gyök alatt, nem hozzáadás és így nem tudok pozitív eredményt elérni.

Ezzel még lesz egy kis munka.

2016. okt. 29. 14:14
 4/11 SimkoL ***** válasza:
Te be is jártál matekra ? Ha a diszkrimináns negatív már ki kell lépni és hadd ne ragozzam tovább.
2016. okt. 29. 14:45
Hasznos számodra ez a válasz?
 5/11 SimkoL ***** válasza:
...és ez mi: var szamolas_ketto = Math.Sqrt(szamolas_egy)/(2*a); ?
2016. okt. 29. 15:06
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
Kettőt találhatsz, az sqrt gyökvonás c#ban, de látom te is csak kötekedni jársz fel.
2016. okt. 29. 15:13
 7/11 anonim ***** válasza:
Igazából ez a kód úgy szar, ahogy van.
2016. okt. 29. 18:12
Hasznos számodra ez a válasz?
 8/11 SimkoL ***** válasza:

'... de látom te is csak kötekedni jársz fel.' Próbáltalak rávezetni a hibákra, de ha ez neked kötekedés.... El kellet volna gondolkodni '...és ez mi: var szamolas_ketto = Math.Sqrt(szamolas_egy)/(2*a); ?' legalább ezen ! Miért osztod el (2*a)-val a diszkrimináns gyökét - már ha van neki, amire szintén rámutattam - és utána szintén osztani (2*a)-val ????

Az Sqrt nem csak C#-ban gyökvonás :)

2016. okt. 29. 19:07
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:

Simkó úr arra próbált rávezetni, hogy már magával a számolással is gondok vannak, leosztod a diszkrimináns gyökér 2*a-val, majd miután összevonod b-vel, megint leosztod az egészet. Így nem fogsz jó eredményt kapni.


Amúgy meg mondták már, mit csinálj: Debugold. Menj szépen lépésről lépésre végig debug módban, és csekkold végig, hogy hol hogyan alakul az eredmény (ha javasolhatom a=1, b=3, c=(-4) értékekkel, így a diszkriminánsod négyzetszám lesz, és egyszerűbb végigkövetni az eredményt)

2016. okt. 29. 20:37
Hasznos számodra ez a válasz?
 10/11 SimkoL ***** válasza:
'Simkó úr' tetszett, de nevezettek csak simán Lajcsinak :)
2016. okt. 29. 20:41
Hasznos számodra ez a válasz?
1 2

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!