Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
stepanik456
Člen
Avatar
stepanik456:26.5.2014 13:00

Ahoj, mám problém a ten spočívá v tom, že nevím jak mám udělat komplexní řešení pči řešení kvadratické rce. Prosím byl by někdo tak laskavý a poradil by mi co s tím? Předem děkuji za jakkoukoliv pomoc.

 
Odpovědět
26.5.2014 13:00
Avatar
Gramli
Tvůrce
Avatar
Odpovídá na stepanik456
Gramli:26.5.2014 13:41

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
}
Editováno 26.5.2014 13:44
Nahoru Odpovědět
26.5.2014 13:41
Kdo to říká ten to je...
Avatar
stepanik456
Člen
Avatar
Odpovídá na Gramli
stepanik456:26.5.2014 13:57

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.

 
Nahoru Odpovědět
26.5.2014 13:57
Avatar
stepanik456
Člen
Avatar
Odpovídá na Gramli
stepanik456:27.5.2014 7:05

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);
Editováno 27.5.2014 7:06
 
Nahoru Odpovědět
27.5.2014 7:05
Avatar
stepanik456
Člen
Avatar
Odpovídá na stepanik456
stepanik456:27.5.2014 7:08

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.

Editováno 27.5.2014 7:08
 
Nahoru Odpovědět
27.5.2014 7:08
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na stepanik456
Jan Vargovský:27.5.2014 13:41

int/int = int, i když ho přiřadíš k double :)

 
Nahoru Odpovědět
27.5.2014 13:41
Avatar
Odpovídá na stepanik456
Libor Šimo (libcosenior):27.5.2014 14:09

Malo by to stačiť takto:

double deleniL = (double)b / (2 * a);

explicitné pretypovanie

Editováno 27.5.2014 14:09
Nahoru Odpovědět
27.5.2014 14:09
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.