Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/10/2006, 14:06
Avatar de Erikfrancisco
Erikfrancisco
 
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 21 años, 2 meses
Puntos: 4
Hola de nuevo, la respuesta la tienes en este código:

Código PHP:
<?php  
$operacion 
"30*2+8/6";
$pos 0;

if ( !
is_int $operacion ) ) 
{
   for ( 
$y 0$y strlen $operacion ); $y++ )
   {
      
$operaciones = array ( '+''-''*''/' );

      for ( 
$x $x count $operaciones ); $x++ )
      {
         if ( 
substr $operacion$pos) == $operaciones[$x] )
         {
            
// si encontro una operación guardamos su posicion y la operacion
            
$op[] = $pos.",".substr $operacion$pos);
         }
      }
      
$pos += 1;
   }

   
$contador 1;
   
$acumula 0;

   for ( 
$e 0$e count ($op); $e++ )
   {
      
$divide explode ","$op[$e] );

      if ( 
$e != count $op ) - )
      {
         
$siguiente explode ","$op[$e 1] );
         
$sig_operacion $siguiente[0] + 1;
      }
      else
      {
         
$sig_operacion strlen $operacion ) - ( $divide[0] + );
      }

      if ( 
$contador == )
      {
         
$calcula[] = substr $operacion0$divide[0] );
         
$calcula[] = substr $operacion$divide[0] + 1$sig_operacion );

         switch ( 
$divide[1] )
         {
            case 
'+':
               
$resultado $calcula[0] + $calcula[1];
               break;
            case 
'-':
               
$resultado $calcula[0] - $calcula[1];
               break;
            case 
'*':
               
$resultado $calcula[0] * $calcula[1];
               break;
            case 
'/':
               
$resultado $calcula[0] / $calcula[1];
               break;
            default:
               echo 
'<p>No es una operación valida.</p>';
               break;
         }

         
$acumula $resultado;
         
$contador += 1;
      }
      else
      {
         
$calcula substr $operacion$divide[0] + 1$sig_operacion );

         switch ( 
$divide[1] )
         {
            case 
'+':
               
$resultado $acumula $calcula;
               break;
            case 
'-':
               
$resultado $acumula $calcula;
               break;
            case 
'*':
               
$resultado $acumula $calcula;
               break;
            case 
'/':
               
$resultado $acumula $calcula;
               break;
            default:
               echo 
'<p>No es una operación valida.</p>';
               break;
         }
         
$acumula $resultado;
      }
   }

   echo 
$acumula;
}
else 

   echo 
$operacion
}
?>
Nota: No se podrán hacer operaciones con cararcteres extraños, es decir, la operacion a realizar no puede estar declarada de esta forma (2*8)-6, pero si puede estar de este modo 2*8-6. ¿Me entiendes? La variable operación sólo puede contener números y las operaciones /,*,+,-.

Espero te sirva de algo o por lo menos te de una idea. Suerte