Autor | Zpráva | ||
---|---|---|---|
MaxDJs Profil * |
#1 · Zasláno: 9. 2. 2011, 18:02:57
Zdravím,
mám tento skript na výpočet mocniny zadaného čísla po stránce PHP správně? Děkuji za odpověď function mocnina($mocnenec,$mocnitel) { if ($mocnenec < 0){ $mocnenec = abs($mocnenec); $vysledek = 1; for ($i = 1; $i<=$mocnitel; $i++){ $vysledek = $vysledek * $mocnenec; } return $vysledek; } elseif ($mocnenec == 0) { $vysledek = 0; return $vysledek; } else { $vysledek = 1; for ($i = 1; $i<=$mocnitel; $i++){ $vysledek = $vysledek * $mocnenec; } return $vysledek; } } $mocnenec = $_POST["mocnenec"]; $mocnitel = $_POST["mocnitel"]; if(preg_match('~^\\d+$~',$mocnenec)){ echo "Mocněnec = ".$mocnenec; echo "<br />"; echo "Mocnitel = ".$mocnitel; echo "<br />"; echo "<h2>Výsledek:</h2>"; echo $mocnenec."^".$mocnitel." = ".mocnina($mocnenec,$mocnitel); } else{ echo "Nezadali jste číslo nebo řetězec čísel!"; } |
||
DJ Miky Profil |
#2 · Zasláno: 9. 2. 2011, 18:06:18
Pokud nemáš důvod použít vlastní funkci, pak bude lepší použít tu vestavěnou, mimo jiné v ní fungují i necelá čísla.
|
||
MaxDJs Profil * |
#3 · Zasláno: 9. 2. 2011, 18:20:34
tohle je regulární výraz pro desetinné místo?
Děkuji za odpověď preg_match('~^[0-9]+([.,]{1}[0-9]*[1-9]+[0-9]*)?$~',$mocnenec) |
||
petr 6 Profil |
#4 · Zasláno: 9. 2. 2011, 22:40:25
MaxDJs:
„mám tento skript na výpočet mocniny zadaného čísla po stránce PHP správně?“ Po stránce php ano. Po stránce logické ne. Pokud ti nevyhovuje funkce pow, a chceš vytvořit svou vlastní funkci, tak: 1. Nikde neošetřuješ, aby byl $mocnitel číslo větší nebo rovno 1. (Jinak se ti skript zacyklí na řádku 5 nebo 16.) 2. Jak již psal DJ Miky, nezohledňuješ ani možnou neceločíselnost proměnné $mocnitel (2^3 ti vrátí to samé jako 2^3.9). 3. Řádky 4 až 8 a 15 až 19 jsou stejné. Funkce abs funguje i na nezáporná čísla, takže kladná čísla můžeš zahrnout i do té první podmínky (a vypustit else). 4. $mocnenec rovný nule můžeš také zahrnout do té první podmínky, akorát budeš zbytečně procházet cyklem, takže bych před tím cyklem ověřoval, zda je $mocnenec nenulový. |
||
Časová prodleva: 15 let
|
0