Diskuze: Kvadratická Rce - Komplexní řešení
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tak při výpočtu D=b2 - 4ac budeš kontrolovat, zda D je menší než nula(jestli je mínusové), pokud ano vynásobíš ho -1 a přídáš k němu i.
double D = b^2 - 4*a*c; // vypocitam si D
if(D<0) // kontroluju D
{
D*=-1;
double deleniL = b/(2*a); //vydelim si jen b
double deleniP = sqrt(D)/(2*a); // odmocnim si D a vydelim
string vysledek = deleniL.ToString() + "+-" deleniP.ToString() + "i"; //musim to dat do stringu vse dohromady
}
Pomohlo, moc děkuji já jsem si nad tím lámal hlavu asi hodinu. Chybělo mi tam že u imaginární části to mám taky vydělit 2*a.
Ještě jsem přišel na jeden podstatný nedostatek,
Console.WriteLine("Vítejte u počítače kvadratických rcí. Zadejte prosím parametry Vaší rce.");
Console.WriteLine("Nápověda: a * x^2 + b * x + c");
Console.Write("a=");
int a = Convert.ToInt32(Console.ReadLine());
Console.Write("b=");
int b = Convert.ToInt32(Console.ReadLine());
Console.Write("c=");
int c = Convert.ToInt32(Console.ReadLine());
double D = (b * b) - (4 * a * c);
Console.WriteLine(D);
if(D > 0)
{
Console.WriteLine("Rce má 2 kořeny, x1 a x2");
double x1 = (-b + Math.Sqrt(D)) / (2 * a);
double x2 = (-b - Math.Sqrt(D)) / (2 * a);
Console.WriteLine("x1 = " + x1);
Console.WriteLine("x2 = " + x2);
}if(D == 0)
{
Console.WriteLine("Rce má jeden kořen x1");
double x1 = (-b + Math.Sqrt(D)) / (2 * a);
Console.WriteLine("x1 = " + x1);
}if(D < 0)
{
Console.WriteLine("Rce má dva komplexní kořeny.");
D = D * -1;
double deleniL = b / (2 * a);
double deleniP = Math.Sqrt(D) / (2 * a);
Console.WriteLine("x1= " + deleniL + "+" + deleniP + "i");
Console.WriteLine("x2= " + deleniL + "-" + deleniP + "i");
}
Console.ReadLine();
Takhle vypadá můj kód,ale tenhle řádek mi vypisuje pouze celá čísla nenapadá mě proč. Ostatní čísla se vypisují normálně, jen toto ne. Nevíte někdo co s tím? Předem děkuji za ochotu.
double deleniL = b / (2 * a);
Omlouvám se, jen co jsem to sem napsal tak mně napadlo řešení, omlouvám se. Vyřešil jsem to tak že jsem proměnné a, b, c přepsal na double.
Malo by to stačiť takto:
double deleniL = (double)b / (2 * a);
explicitné pretypovanie
Zobrazeno 7 zpráv z 7.