Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2011, 14:22
amils21
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Pregunta Calculadora POO duda función preg_match

bueno hola soy nuevo en el foro y también programando en php, estaba bien con la calculadora sumando restando multiplicando dividiendo ahora quería mejorarlo y por eso agregue RAÍZ, EXPONENTE, HEXADECIMAL Y BINARIO

EL PROBLEMA:

bueno estoy usando la función preg_match cosa de que me reconozca +,-,*,/, esos signos ahora como hago para que me reconozca raíz exponente hexa y bina

el preg_match que use para +,-,/,* me lo paso un amigo la verdad no entiendo muy bien como funciona todavía lo leí en el manual pero no me deja algo claro

si lo haces correr funciona bien solo la (+,-,*,/) . Pero no lanza el resultado si es que quisiera sacar raíz, exponente hexa o bina.

me falta el código de hexa y bina eso luego lo resolvere. bueno en si mas que todo mi duda es como funciona el preg_match y el código que debo utilizar para sacar lo que deseo. o por lo menos como hacer para que funcionen la raiz y exponente

el codigo

Código PHP:
<html>
<head>
<title>Calculadora</title>
</head>
<body>
<?php
class calculadora {
    var 
$nums '';
    var 
$calc '';
    var 
$op '';

    function 
mostrar () {
        
$num = @$_GET['num'][0];
        
$calc = @$_GET['calc'];

        if(empty( 
$num ) AND empty( $calc )) {
            return 
false;
        }

        if(!isset( 
$display )) {
            
$display $calc;
        }

        
$this->nums .= empty( $num ) ? $display $display.$num;

        
$this->setOperacao();

        if(!empty( 
$this->op )) {
            
$this->calc $this->nums.rawurldecode$this->op ).$num;
        }

        return 
$this->calcular();
    }

    function 
setOperacao () {
        if(!empty( 
$_GET['op'] )) {
            
$this->op $_GET['op'];
        }
    }

    function 
calcular() {
        
$calc = empty( $this->calc ) ? $this->nums $this->calc;

        if(isset( 
$_GET['resultado'] )) {
            if(
preg_match'/^([0-9]+)(\/|\*|\+|\-)([0-9]+)+$/'$calc$match )) {
                switch( 
$match[2] ) {
                    case 
"+":
                    return 
$match[1]+$match[3];
                    break;
                    case 
"-":
                    return 
$match[1]-$match[3];
                    break;
                    case 
"/":
                    return 
$match[1]/$match[3];
                    break;
                    case 
"*":
                    return 
$match[1]*$match[3];
                    break;
                    case 
"^":
                    return 
pow($match1[1],$match[3]);
                    break;
                    case 
"raiz":
                    return 
sqrt($match1[1]);
                    break;
                }
            } else {
                return 
"Ocorrio un error";
            }
        }
        return 
$calc;
    }
}
$calc = new calculadora();
?>
<form action="" method="get">
<table id="calculadora" cellpadding="10" cellspacing="0" align="center">
<tr>
  <td align="center" colspan="5">
      <span id="titulo">Calculadora</span><br/>
       <input id="calc" type="text" name="calc" value="<?=$calc->mostrar();?>"/>
   </td>
</tr>
<tr>
  <td>
     <input type="submit" name="num[]" value="7" />
  </td>
  <td>
     <input type="submit" name="num[]" value="8" />
  </td>
  <td>
     <input type="submit" name="num[]" value="9" />
  </td>
  <td>
     <input type="submit" name="op" value="/" />
  </td>
  <td>
     <input type="submit" name="op" value="^" />
  </td>
</tr>
<tr>
  <td>
     <input type="submit" name="num[]" value="4" />
  </td>
  <td>
      <input type="submit" name="num[]" value="5" />
  </td>
  <td>
      <input type="submit" name="num[]" value="6" />
  </td>
  <td>
      <input type="submit" name="op" value="*" />
  </td>
  <td>
     <input type="submit" name="op" value="raiz" />
  </td>
</tr>
<tr>
   <td>
      <input type="submit" name="num[]" value="1" />
   </td>
    <td>
<input type="submit" name="num[]" value="2" />
   </td>
   <td>
      <input type="submit" name="num[]" value="3" />
   </td>
   <td>
      <input type="submit" name="op" value="-" />
   </td>
   <td>
     <input type="submit" name="op" value="hexa" />
  </td>
</tr>
<tr>
  <td>
      <input type="submit" name="num[]" value="0" />
  </td>
  <td>
      <input type="submit" name="num[]" value="." />
  </td>
  <td>
      <input type="submit" name="resultado" value="=" />
  </td>
  <td>
      <input type="submit" name="op" value="+" />
  </td>
  <td>
     <input type="submit" name="op" value="bina" />
  </td>
</tr>
<td align="center" colspan="5"> <input type="reset" value="restaurar"/></td>
</table>
</form>
</body>
</html>