Strona 1 z 1

[php] pole trójkąta o podanych wierzchołkach

: 2 paź 2007, o 20:36
autor: nuclear
Witam
mam do napisania w php skrypt który ma liczyć pole trójkąta o podanych wierzchołkach
doszedłem do czegoś

Kod: Zaznacz cały

<?
$wAx = $_POST['wAx'];
$wBx = $_POST['wBx'];
$wCx = $_POST['wCx'];
$wAy = $_POST['wAy'];
$wBy = $_POST['wBy'];
$wCy = $_POST['wCy'];
if ($wAx and $wAy and $wBx and $wBy and $wCx and $wCy && $w<=0){
print 'błąd wspolrzednych';
print '<br><a href="4_1.php">Powrót do formularza</a>';
}
else if ($wAx and $wAy and $wBx and $wBy and $wCx and $wCy) {
$w= ($wAx*$wBy + $wAy*$wCx + $wBx*$wCy - $wCx*$wBy - $wCy*$wAx - $wBx*$wAy) / 2 ;
print "Pole trojkata o wprowadzonych współżednych wynosi: $w" ;
print '<br><a href="4_1.php">Powrót do formularza</a>';
} else {
print '<form action= "4_1.php" method=post>';
print 'Wpisz tekst do pola formularza<br>';
print 'wierzchołekA' ;
print '<input type="text" name="wAx">';
print '<input type="text" name="wAy"><br>';
print 'wierzchołekB' ;
print '<input type="text" name="wBx">';
print '<input type="text" name="wBy"><br>';
print 'wierzchołekC' ;
print '<input type="text" name="wCx">';
print '<input type="text" name="wCy"><br>';
print '<input type="submit" value="Licz">';
print '</form>'; 
}
?>
Proszę o podpowiedz co w tym skrypcie jest błedne

[php] pole trójkąta o podanych wierzchołkach

: 2 paź 2007, o 20:56
autor: luka52
Osobiście użyłbym warunku:

Kod: Zaznacz cały

if ($_POST)
do sprawdzenia czy jakieś dane zostały wysłane, a dopiero potem sprawdzał, czy wierzchołki są poprawne.

PS. $w może przyjąć wartość ujemną - we właściwym wzorze (znajdującym się np. w tablicach maturalnych ) jest jeszcze wartość bezwzględna (o której zapomniałeś).

[php] pole trójkąta o podanych wierzchołkach

: 3 paź 2007, o 01:42
autor: Rafal88K
Masz tak:

Kod: Zaznacz cały

if ($wAx and $wAy and $wBx and $wBy and $wCx and $wCy && $w<=0)
A dopiero później:

Kod: Zaznacz cały

else if ($wAx and $wAy and $wBx and $wBy and $wCx and $wCy) {
$w= ($wAx*$wBy + $wAy*$wCx + $wBx*$wCy - $wCx*$wBy - $wCy*$wAx - $wBx*$wAy) / 2 ;
Nie możesz najpierw sprawdzić zmianą a dopiero później ją zainicjalizować I do tego zobacz co napisał luka

W PHP wartość bezwzględna to:

Kod: Zaznacz cały

$abs1 = abs(14);   // $abs1 = 14
$abs2 = abs(-23);   // $abs2 = 23