Jump to content
rodrigo45

Calculadora

Recommended Posts

rodrigo45

bom dia pessoal

preciso de uma ajuda de voces

estou a fazer uma calculadora com as seguintes operações + - * / sqrt x^2 x^y 1/x ja tenho o codigo feito so que quando vou executar a calculadora não me mostra os numeros nem faz as contas.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Calculadora</title>
<style type="text/css">

td {

color: #FFFF00;
font-weight: bold;
text-align: center;
border: 1px solid #000099;
}

input#calc {

background-color: #759475;
text-align: right;
color: #222722;
border-color: #000099;

}

table#calculadora {
border: 1px solid  #000099;
background-color: #3300cc;
}

#titulo {

font-family: arial, verdana, sans serif;
font-size: 1em;
font-weight: bold;
text-align: center;
}

</style>
</head>
<body>

<?php


class calculadora {
       
    var $num = ''; 
        var $nums = '';
        var $calc = '';
        var $op = '';
	var $match= '';

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

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

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

                $nums = empty( $num ) ? $display : $display.$num;
               
                $setOperacao();
               
                if(!empty( $op )) {
                        $calc = $nums.rawurldecode( $op )$num;
                }

                return $calcular();
        }

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

        function calcular() {
               
                $calc = empty( $calc ) ? $nums : $calc;

                if(isset( $_GET['resultado'] )) {
                        if(preg_match( '/^([0-9]+)(\/|\*|\+|\-\x^2\x^y\sqrt\1/x)([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 "x^2":
                                                return $match[1]x^2$match[3];
                                        break;
									case "x^y":
                                                return $match[1]x^y$match[3];
                                        break;
									case "sqrt":
                                                return $match[1]sqrt$match[3];
                                        break;
									case "1/x":
                                                return $match[1]1/x$match[3];
                                        break;
                                }
                        } else {
                                return "Ocorreu um erro";
                        }
                }
                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="" />
    </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="x^2" />
    </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="x^y" />
    </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="sqrt" />
    </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="1/x" />
    </td>
</tr>
</table>
</form>
</body>
</html>

Share this post


Link to post
Share on other sites
softklin

Não faz, porque depois da criação do objecto calculadora, esqueceste-te de invocar os métodos da tua classe.

Se percebi bem a classe, tens de fazer:

<?php
if (!empty($_GET)) {
  $calc = new calculadora();
  $calc->mostrar();
  $calc->setOperacao();
  $calc->calcular();
}
?>

De notar que estas operações só correm quando o formulário for submetido (se $_GET não estiver vazio).


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
softklin

Eu nem testei o exemplo: obrigado pela correcção. Pensei que também era permitido o ponto (.) para se referir a funções, mas afinal é mesmo ->


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.