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: 21 años, 3 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 $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;
         }
      }

      
$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