kvadr rovnica v php

Sekcia: Programovanie 14.04.2009 | 02:20
chaos   Návštevník
ludia ja som v koncoch...robil som zadania do skoly, vsetko slo OK, bez problemov len kvadraticka rovnica mi nejde...fakt neviem co uz s tym...dufam ze mi poradite...ono to vzdy vypocita len poslednu podmienku (diskriminant rovny nule)

dalsi problem je ze neviem ako spravit aby to pocitalo aj komplexne cisla (resp odmocninu zo zaporneho cisla)

kod:

if ($a==0) echo "Rovnica nemá riešenie.";

else
{
$d=$b*$b–4*$a*$c;

if ($d>0)
{
$x1=(-$b+sqrt($d))/2*$a;
$x2=(-$b-sqrt($d))/2*$a;

echo "x1=$x1
x2=$x2";
}

if ($d<0)
{
$x1=(-$b+sqrt($d))/2*$a;
$x2=(-$b-sqrt($d))/2*$a;

echo "x1=$x1 i
x2=$x2 i";
}

if ($d==0)
{
$x=(-$b/2*$a);

echo "x=$x";
}
}
    • Re: kvadr rovnica v php 14.04.2009 | 10:16
      Avatar Miroslav Bendík Gentoo  Administrátor
      Snáď funkčné riešenie je na tomto webe (snáď pomôže). Časť zdrojových kódov:
      double a, b, c;
      
      a = 0;
      // načítanie
      cout << "Zadajte a " << endl;
      cin >> a;
      cout << "Zadajte b " << endl;
      cin >> b;
      cout << "Zadajte c " << endl;
      cin >> c;
      
      double D = b * b - 4 * a * c;
      
      if (a == 0)
      {
      	cout << "Vysledok je " << (-c) << endl;
      }
      else if (D  == 0)
      {
      	cout << "Vysledok je " << (-b / 2.0 * a) << endl;
      }
      else if (D > 0)
      {
      	D = sqrt(D);
      	cout << "Vysledok x1 je " << (-b - D) / (2.0 * a) << endl;
      	cout << "Vysledok x2 je " << (-b + D) / (2.0 * a) << endl;
      }
      else
      {
      	D = sqrt(-D);
      	double real = (-b) / (2.0 * a);
      	double imag = D / (2.0 * a);
      	cout << "Vysledok x1 je " << real << (imag > 0?" +":" ") << imag << "i" << endl;
      	cout << "Vysledok x2 je " << real << ((-imag) > 0?" +":" ") << (-imag) << "i" << endl;
      }
      
    • Re: kvadr rovnica v php 14.04.2009 | 12:04
      chaos   Návštevník
      díky, tak som to trošku upavil a aspoň som použil vzorce (ale nvm či dobre) na výpočet komplexnej zložky, no stále mi to robí nech zadám hocičo podmienku (d==0)


      if ($a==0) echo "Rovnica nemá riešenie.";

      else
      {
      $d=$b*$b–4*$a*$c;

      if ($d>0)
      {
      $x1=(-$b+sqrt($d))/2*$a;
      $x2=(-$b-sqrt($d))/2*$a;

      echo "x1=$x1
      x2=$x2";
      }

      else if ($d==0)
      {
      $x=(-$b/2*$a);

      echo "x=$x";
      }

      else
      {
      $d=sqrt(-$d);

      $x1=(-$b)/(2*$a);
      $xi=$d/2*$a;

      echo "x1=$x1+$xi";
      echo "i
      ";
      echo "x2=$x1-$xi";
      echo "i";
      }
      }