V dnešním článku bych ukázal, jak jsem udělal script na výpočet kvadratické rovnice v PHP. Ukázku si můžete
prohlédnout zde.
Pokud nevíte, co je to diskriminant, tak rovnou skončete se čtením, protože to pro vás bude španělská vesnice

A ještě na úvod by se slušelo říct, že tento příklad jsme ve škole dělali v
Pascalu
Tak a teď se můžeme vrhnout do samotného scriptu ;) Nebudu zde popisovat, jak se dělá HTML dokument a
podobý věcičky a rovnou skočím na samotné tělo stránky. Jako vstupní brána do scriptu nám samozřejmě poslouží formulář:
<form action="adresa" method="get">
<input type="text" name="a">Proměnná A
//Stejně tak napíšeme i proměnnou B a C
<input type="hidden" name="akce" value="vypocitat">
<input type="submit" value="Vypočítat">
</form>
Rejpalové mi odpustí, že je to napsané v dost jednoduchém HTML a můžeme jít dál :))
<?
if ($_GET["akce"] == "vypocitat"):
$a = $_GET["a"];
$b = $_GET["b"];
$c = $_GET["c"];
if ($a=="" or $b=="" or $c==""):
echo "Nebyly zadány všechny proměnné!";
else:
Myslím, že toto je jasné. Pokud je potvrzen formulář, splní se první podmínka a může se dál pokračovat ve
scriptu. Další podmínka ověřuje, zda-li byly zadány všechny údaje. K tomu se použil operátor OR
A nyní si musíme rozmyslet samotný výpočet kvadratické rovnice. Nejdříve musíme ošetřit to, aby z rovnice nevznikla lineární rovnice. A pokud vznikne, vypočítá se kořen rovnice:
if ($a == 0):
if ($b == 0):
echo "B se nesní rovnat nule!";
else:
echo -$c/$b;
endif;
else:
Nevíte, kde se vzala podmínka, že se B nesmí rovnat nule? Fakt nevíte? ;) Dělit nulou přeci nejde 
A nyní potřebujeme vypočítat diskriminant - pokud bude záporný, rovnice
nemá řešení, pokud bude nula, výsledek je jen jeden a pokud je kladný, výsledky budou dva:
//výpočet diskriminantu:
$d = $b * $b - (4 * $a * $c);
if ($d < 0):
echo "Rovnice nemá řešení";
else:
if ($d == 0):
echo -$b/(2 * $a);
else:
echo (-$b + sqrt($d))/(2 * $a);
echo (-$b - sqrt($d))/(2 * $a);
endif;
endif;
endif;
endif;
endif;
?>
Samozřejmě že by bylo dobré výstup zformátovat a přidat CSS, aby to bylo trošku k světu
Kategorie: Web a vše kolem něj ≈ 24. 11. 2005 ≈ Počet zobrazení: 6820x
T-Fuse [
226] -- 24. 11. 2005 18:06:52
Mno... pro hodnoty a,b,c=1,2,3 neni pravda, ze rovnice nema reseni... ona ma totiz dva komplexni koreny 
Mazlo [
227] -- 24. 11. 2005 18:10:07
Díky za upozornění, ale já jsem teďka ve škole nebyl skoro 14 dní a zrovna nyní prej ve škole začali brát komplexní čísla
Podle učebnice jsem si zjistil, co to přibližně je, ale zatím to moc dobře nechápu 
Timy [
228] -- 24. 11. 2005 19:34:57
T-Fuse: "ona ma totiz dva komplexni koreny" -- rovnice nemá v oboru reálných čísel řešení. Takto bych to upravil a je to;-)
pckeeper [
229] -- 24. 11. 2005 21:32:41
No hezke, ale zlatej perl :))
#!/usr/bin/perl
# Program pro vypocet Kvadratickych rovnic
# Napsal : Martin Vesely alias Pckeeper
# mail: pckeeper@seznam.cz
print "Hodnota a";
$a=<STDIN>;
print "Hodnota b";
$b=<STDIN>;
print "Hodnota c";
$c=<STDIN>;
$abc=$b*$b-4*($a*$c);
print "D = $abc\n";
if ($abc>=0) {
$x0=(-$b+sqrt($abc));
$x1=$x0/(2*$a);
$x2=(-$b-sqrt($abc));
$x3=$x2/(2*$a);
print "Kvadraticka rovnice ma reseni a koreny jsou X1=$x1 a X2=$x3 :)\n";
}
else {
print "Kvadraticka rovnice nema reseni :(";
}
pckeeper [
230] -- 24. 11. 2005 21:33:31
Delam si srandu :))
Mazlo [
231] -- 25. 11. 2005 07:37:35
Ještě včera jsem pak upravil ten script a nahoru jsem napsal "ax^2 + bx + c = 0, výsledek je v oboru reálných čísel" (děkuji T-fusovi za radu
)
pckeeper: hmm, vypadá to hezky 
peCan [
232] -- 25. 11. 2005 08:23:07
nemam rad matiku a komplexni cisla uz vubec ne:-)
Sc@ry [
236] -- 28. 11. 2005 23:20:45
peCan: tohle je jeste jednoduchý, mě zas teďkon nebaví analytická geometrie :-P
iamscary (zavinac) seznam.cz |
www |
IM: 286136060 |
Reagovat
MeBa [
235] -- 29. 11. 2005 17:42:07
Lord AgEnT [
240] -- 30. 11. 2005 20:33:34
lol, taky jsme tohle dělali v pascalu. :)
k těm komplexním číslům:
d:=-d;
y1:=(-+sqrt(d))/(2*a);
y2:=(-b-qrt(d))/(2*a); write ln('Koren x1 se rovna hodnote ',y1:3:3,' i');
writeln('Koren x2 se rovna hodnote ',y2:3:3,' i');
prostě tak nějak :)
agent_ (zavinac) centrum.cz |
www |
IM: 162729221 |
Reagovat
Mazlo [
262] -- 02. 12. 2005 22:15:46
Lord AgEnT:
Hezký
Ale teď si mi připoměl jednu děsně hnusnou věc
Za 3 týdny píšeme kompozici z komplexních čísel 
Lord AgEnT [
266] -- 03. 12. 2005 16:02:06
to mě to čeká až příští rok :P
agent_ (zavinac) centrum.cz |
www |
IM: 162729221 |
Reagovat
pckeeper [
270] -- 04. 12. 2005 22:39:02
To MeBa ... nechapu pripominku (po letnem preletnuti vaseho odkazu) ...
To co jsem napsal bylo v perlu nikoliv v php :)
Littlemaple [
554] -- 17. 02. 2006 18:46:54
Není ošetřeno vkládání písmenek místo čísel
. Při prezentaci tak snadného prográmku je třeba, aby byl více než dokonalý 
pckeeper [
735] -- 20. 04. 2006 20:13:20
To me ani nenapadlo, ze by tam byl nekdo schopen dat pismenka, nebo jeste lepe nejake specialni znaky :)))
Radushka [
877] -- 08. 06. 2006 18:22:05
já tomu nerozumím a ještě navíc ztoho píšeme zítra písemku:((
Lukky [
1464] -- 26. 04. 2007 11:45:17
V kvadratických rovnicích se B může rovnat nule
Mazlo [
1465] -- 26. 04. 2007 16:41:21
Tak se koukni pořádně, já tu podmínku mám u lineární rovnice a né u kvadratický 