Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/10/2006, 14:16
Avatar de Erikfrancisco
Erikfrancisco
 
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 22 años, 10 meses
Puntos: 4
Hay que utilizar la imaginación. El código que te dí definelo como una función y define las operaciones en un array, luego has un bucle donde a la función le pases cada operacion y el resultado de esta se la pasas a otra variable para que te haga el acumulado total. Ya te lo hice, mira:

Código PHP:
<?php
function realiza_operacion ( $cu_op )
{
   
$operacion = $cu_op;
   
$pos = 0;

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

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

      
$contador = 1;
      
$acumula = 0;

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

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

         if ( 
$contador == 1 )
         {
            
$calcula[] = substr ( $operacion, 0, $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;
         }
      }

      
$operacion = $acumula;
      return 
$operacion; 
   } 
   else  
   {
      return 
$operacion;
   }
}

$operaciones = array ( "10*5/4", "5*10-2", 10 ); // aquí mete todas las operaciones a realizar

$acum_total = 0;

for ( 
$t = 0; $t < count ( $operaciones ); $t++ )
{
   
$op_resuelta = realiza_operacion ( $operaciones[$t] );
   echo 
"El resultado de la operación ".$operaciones[$t]." es: ".$op_resuelta."<br/>";
   
$acum_total += $op_resuelta;
}
echo 
"<p>La suma total de todas las operaciones es: ".$acum_total;
?>
Como vez, despues de lo que ya te había hecho es muy fácil resolver tu problema, sólo tendrás que agregar todas las operaciones que quieres realizar a la variable $operaciones y ¡vuala! se resolvio tu problema. Tendrás que tomar en cuenta lo que ya se te planteo en la nota que te puse anteriormente.

Suerte