Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2005, 04:50
Avatar de Durgeoble
Durgeoble
 
Fecha de Ingreso: marzo-2003
Mensajes: 462
Antigüedad: 21 años, 1 mes
Puntos: 2
bcsqrt() no funciona

He hecho un scrip el cual depende en gran medida de un calculo de dicha funcion.
El hecho es que en local me funciona pero al subirlo me dice que la funcion no esta definida (PHP4).
¿Como podria substituir dicha funcion por otra que me sacara la raiz cuadrada de un numero?
El scrip es este:
Código PHP:
<html>
<head>
<title>prueba</title>
</head>
<style type="text/css">
.normal { color: green;}
.ganador { color: blue; }
.perdedor { color: red; }
div { border: 2; background-color: gray;}
.bracket { height: 100%; top: 0px; margin: auto;}
td { margin-top: 0px; padding: auto;}
table {margin: 0px; padding: 0px; }
</style>
<body>
<?
$clan
=array('Durgeoble','Foxtrot','Santi','Malvado','Neo_the_boss','Amon_ra','Obi','Horvs','Pir@','Uniko','Darky','Gutierrez','Kamikace','Pier','Raziel','relleno','participante','jugador','player','estudiante','aleatorio','freeman','gordon','starcraft','superman','batman','tarzan','pitufo','cantante','moro','maestro','metro');

function 
bracket($clan,$rondaactual=1,$totalrondas=0

    
    
$new="<table bgcolor=\"red\"> \n";
$fin="</table> \n";
$cab="<tr><td> \n";
$pie="</td></tr> \n";
/* Lo primero es averiguar cuantas veces se debe ejecutar la funcionse debe ejecutar un numero igual al numero de rondas y este es la raiz cuadrada del numero de participantes */
if (count($clan)>2){$rondas=bcsqrt(count($clan));}
else {
$rondas=1;}
/* Comprobamos si es la primera vez que se ejecuta la funcion comprobando si el valor de $totalrondas es 0 de lo contrario cerramos la tabla abierta anteriormente y reejecutamos la funcion */
if ($totalrondas==0) { $totalrondas=$rondas;}
else {echo 
"</td></tr> </table> </td>";}
    
/* cada ronda se situa en una nueva columna, asi pues escribimos una nueva columna por cada ronda */
echo " <td> <table class=\"bracket\">  $cab \n";
echo 
"<span>Ronda $rondaactual</span> $pie";


    
/* sabiendo eso le pasamos el numero de iteracciones */
for ($i=0;$i<=$rondas;$i++) {
    
    
/* ahora en cada ronda se debe ejecutar un combate entre cada dos partcipantes eso hace un total de iteracciones de la mitad de participantes */
    
$partidas=(count($clan)/2);

/*nos aseguramos de que el numero no bajara de 1*/
    
if (count($clan)==1) { $partidas=1;}
    
/* igual que antes ejecutamos la accion un numero de veces igual al de encuentros */
    
for ($i=0;$i<$partidas;$i++) { 
        if (
$i==0) {$encuentro=0;}
        else {
$encuentro=($i*2);}
        
/* sacamos dos participantes cada vez */
        
$participantes=array_slice($clan,$encuentro,2);
        
$puntuacion1=rand(1,5);
        
$puntuacion2=rand(1,5);
        
    
    if (
$participantes[0]=="Sin clasificar" or $participantes[1]=="Sin clasificar") { $ganador="Sin clasificar"$estado1="normal"$estado2="normal"$partida="Oponente(s) por decidir"; }
    elseif (
$puntuacion1 == $puntuacion2 ) { $ganador="Sin clasificar"$estado1="normal"$estado2="normal";$partida="Partida por jugar";}
    elseif (
$puntuacion1 $puntuacion2) {$ganador=$participantes[0]; $estado1="ganador"$estado2="perdedor";}
    elseif (
$puntuacion1 $puntuacion2) {$ganador=$participantes[1]; $estado1="perdedor"$estado2="ganador";}
    
$ed=$i+1;
    echo 
"$cab <div>Encuentro $ed <br /> \n";
    echo 
"<span class=\"$estado1\"> {$participantes[0]} </span> vs <span class=\"$estado2\"> {$participantes[1]} </span> <br />\n"
    if (
$partidas==0) {$vencedor=$ganador;}
    else {
$vencedor[]=$ganador;
    if (
$ganador=="Sin clasificar") { echo "$partida</div> $pie \n"; }
    else { if (
$rondaactual<$totalrondas) {echo "Vencedor: <span class=\"ganador\">$ganador </span></div> $pie<br />\n";} }}
    }
        
    
/* indicamos la ronda actual */ 
    
if (!isset($rondaactual)){$rondaactual=1;}
    else {
$rondaactual=$rondaactual +1;}
    
    }
    
/* Se comprueba si el numero de participantes aun permite ejecutar una nueva roda, de ser asi la ejecuta, de lo contrario finaliza el torneo declarando el ganador */
    
if (count($vencedor)>=2){bracket($vencedor,$rondaactual,$totalrondas);}
    
/* Comprueba que la partida se ha jugado, de lo contrario cierra la tabla */
    
elseif ($ganador!="Sin clasificar") {echo "vencedor del torneo <span class=\"ganador\">$ganador</span> </div> $pie $fin </td>\n";}
    else {echo 
"$fin";}

    
}
/* abrimos la tabla */
echo "<table><tr> \n";
    
bracket($clan);    
echo 
"</td></tr></table>";
    
?>
    
    </body>
    </html>
Al cual solo le falta cambiar $puntuacion1 y $puntuacion2 pon una consulta a la base de datos con el nombre del participante (esta asi ahora para poder probar mas rapido)
__________________
Todas mis respuestas funcionaran correctamente en aquellos navegadores que respeten los estandares.