Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rownanie kwadratowe.
Forum PHP.pl > Forum > PHP
Phivko
To jest skrypt z kasiążki, który wyświetla formularz z możliwością wpisania trzech danych a, b i c, a potem oblicza rozwiazanie rownania kwadratowego ax2+bx+c=0:

[php:1:8616e1ec27]<?php

// Pobiera od użytkownika współczynniki równania, a następnie
// oblicza wartości zerowe równania kwadratowego.
$a = str_replace (",", ".", $a); settype ($a, "double");
$b = str_replace (",", ".", $cool.gif; settype ($b, "double");
$c = str_replace (",", ".", $c); settype ($c, "double");
if ($a || $b || $c) { # wartości w formularzu s± ok
print ("a = $a, b = $b, b = $c<BR>");
if ($a) {
$delta = $b*$b-4*$a*$c;
if ($delta < 0) {
print ('Równanie nie ma pierwiastków rzeczywistych');
} elseif ($delta == 0) {
$x1 = -$b/(2 * $a);
print ("Równanie ma jeden pierwiastek rzeczywisty: $x1");
} else {
$x1 = (-$b-sqrt($delta)) / (2*$a);
$x2 = (-$b+sqrt($delta)) / (2*$a);
print ("Równanie ma dwa pierwiastki rzeczywiste: $x1 i $x2");
}
} elseif ($cool.gif {
$x1 = -$c/$b;
print ("Równanie ma jeden pierwiastek rzeczywisty: $x1");
} else {
print ('Równanie nie ma pierwiastków rzeczywistych');
}
print '<BR><A HREF="4-03.php">Powrót do formularza</A>';
} else { # nie ma wpisanych danych, wyświetlamy formularz
print '<FORM ACTION="4-03.php" METHOD=GET>';
print 'a: <INPUT TYPE="text" NAME="a"><BR>';
print 'b: <INPUT TYPE="text" NAME="b"><BR>';
print 'c: <INPUT TYPE="text" NAME="c"><BR>';
print '<INPUT TYPE="submit" VALUE="Wyślij">';
print '</FORM>';
}

?>[/php:1:8616e1ec27]

Moze mi ktoś powiedziec po co są linie: 10, 22, 23, 24, 25, 26, 27. Czy wogole sa potrzebne?. Wlasnie ucze sie php i oprocz wymienionych wyzej linii caly skrypt jest dla mnie jasny.
Po usunięciu tych linii skrypt dziala poprawnie.
Koshin
if ($a)

wydaje mi sie ze jesli zmienna $a zawiera jakas wartosc to wynikiem if($a) jest TRUE (czyli instrukcje sa wykonywane) podobnie w lini 22. to jest po prostu taki myk, w razie gdybys nie podal wartosci a, lub b -> wtedy inaczej sie rownanie liczy.

23 - zwykle dzielenie i przypisanie wyniku do zmiennej $x1

kolejne linijki sa drukowaniem rozwiazania rownania.. dla jednego rozwiazania oraz dla braku rozwiazania. bo jak zapewne wiesz, rownania kwadratowe moga miec 3 rowne wersje rozwiazania (zalezy od rownania)

oczywiscie mozesz je pominac. ale jaki sens wtedy to liczyc??

skrypt prawdopodobnie dziala poprawnie (lub prawie poprawnie) tylko dla konkretnych wartosci zmiennych.
scanner
OSTRZEŻENIE:
PROSZĘ NADAWAĆ WĄTKOM SENSOWNE TYTUŁY.
Phivko
Ok, juz rozumiem ale...
Czy 8 linia:

[php:1:8a223973fe]<?php
if ($a || $b || $c) { # wartości w formularzu są ok
?>[/php:1:8a223973fe]
nie oznacza ze wszystkie wartosci a, b i c musza byc wpisane?
DeyV
nie - zapis || oznacza lub (or), czyli, id ($a || $b || $c) oznacza jeśli a lub b lub c jest wpisane, wtedy ...
Jeśli chiałbyś, by sparawdzać, czy wszystkie wartośći są wpisane, musisz zkorzystać z and (&&)

A takie tytuły tamatów naprawdę drażnią.
scanner
Cytat
23  - zwykle dzielenie i przypisanie wyniku do zmiennej $x1
Ze zmianą znaku.[php:1:4d55f46570]<?php
$x1 = (-1)*($c/$cool.gif;
?>[/php:1:4d55f46570]
Phivko
Rozumiem to tak:

if ($a) - jezeli jest zmienna a (zmienne b i c moga byc ale nie musza) to...
if ($cool.gif - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...

Tak Koshin masz racje, po usunieciu linijek, o ktorych mowa skrypt obliczy wynik tylko gdy wszystkie zmienne sa wpisane.
Nie mogelm sie polapac o co chodzi poniewaz myslalem, ze ten zapis if ($a || $b || $c) ozacza, ze wszystkie zmienne musza byc wpisane.

Jeszcze jedno. Między tymi zapisami:

[php:1:657578915c]<?php
$x1 = -$c/$b;
?>[/php:1:657578915c]
[php:1:657578915c]<?php
$x1 = (-1)*($c/$cool.gif;
?>[/php:1:657578915c]
nie ma chyba zadnej roznicy w wyswietlaniu, oba sa poprawne? czy ktorys jest bardziej zalecany?
scanner
pierwszy jest szybszy i czytelniejszy. Zresztą w matematyce jako takiej jest konstrukcja y = -x i jest ona poprawna.
Phivko
Ok.
Dowiedzialem sie juz wszystkiego co chcialem.
Dzieki.
Nara.
Cudi
Cytat
Rozumiem to tak:

if ($a) - jezeli jest zmienna a (zmienne b i c moga byc ale nie musza) to...
if ($cool.gif - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...


To źle rozumiesz...
if ($a) - sprawdza tylko wartość zmiennej $a, a reszte ma w d...
if ($cool.gif - j.w tyle że zmiennej $b...
if ( empty($a) && isset($cool.gif ) - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...
qbba
Cytat
if ( empty($a) && isset($cool.gif ) - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...


if ( empty($a) && isset($cool.gif ) - jezeli zmienna a jest pusta (0), i jest zmienna b, (zmienna c moze byc ale nie musi) to...

jak chcesz sprawdzic czy nie ma zmiennej to
[php:1:be8e55955a]<?php
if( !isset($cool.gif )
?>[/php:1:be8e55955a]
Cudi
Jeśli zmiennej nie ma to funkcja empty() równierz zwróci TRUE...
Phivko
Cytat
Cytat
Rozumiem to tak:

if ($a) - jezeli jest zmienna a (zmienne b i c moga byc ale nie musza) to...
if ($cool.gif - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...


To źle rozumiesz...
if ($a) - sprawdza tylko wartość zmiennej $a, a reszte ma w d...
if ($cool.gif - j.w tyle że zmiennej $b...
if ( empty($a) && isset($cool.gif ) - jezeli nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...

Dobrze rozumiem:
if ($a) - napisales to co ja tylko innymi slowami...
if ($cool.gif - if ($a) jest wyzej to znaczy, ze jesli bedzie $a to nie dojdzie do sprawdzania $b, czyli aby sprawdzil $b nie moze byc zmiennej a czyli:
Cytat
nie ma zmiennej a, jest zmienna b, (zmienna c moze byc ale nie musi) to...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.