Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Batista Neto

[Cancelado] Desafio Premiado PHP

Recommended Posts

Desafio Premiado PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imaster...o-premiado-php/

 

Aberto à todos os membros

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal

 

vou ver se arranjo um tempo para participar.

Fim de semestre na faculdade é complicado... provas e trabalhos que não acabam mais.

 

 

Mas é necessário criar algumas regras a mais para essa 1a. etapa. Por exemplo, não poder usar eval(). Senão fica fácil demais. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é necessário criar algumas regras a mais para essa 1a. etapa. Por exemplo, não poder usar eval(). Senão fica fácil demais. :P

 

hehehe, mas o eval não vai funcionar, olha só:

 

echo eval( '10 + 10 + 10' );

 

<b>Parse error</b>: syntax error, unexpected $end in <b>/var/www/html/vcomchat.com.br/index.php(14) : eval()'d code</b> on line <b>1</b><br />

Compartilhar este post


Link para o post
Compartilhar em outros sites

funciona, mas com algumas modificações e tratamento de string

 

não postei o código, pois, se puder usá-la, usá-la-ei :P :D

 

hehehe, bom, não se esqueça que são 6 etapas no total...

 

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comecei na sexta.. fiz o tratamento de erros.. mas não tive tempo para terminar.

Parei aqui:

<form method="POST">
<input type="text" id="num" name="num">
<input type="submit" id="btEnvia" name="btEnvia">
</form>
<?php

/**
 * 
 * Renato Siroma <renatosiroma@gmail.com> 27/11/2009
 * Classe Gera Erros, Calcula e Retona o valor dado.
 * Não utilizei classes SPL pois não roda com versões menores que 5.3.0
 * 
 */

ini_set("display_errors","1");
error_reporting(E_ALL | E_STRICT);

class calc
{

	private $TipoCampo = false;
	private $ErrosGerados = "";
	private $QuantiaErros = 0;
	private $msgErroDefaulPlural = "Foram identificadas algumas situações inesperadas durante a execução do código!";
	private $msgErroDefaul = "Foi identificado uma situação inesperada durante a execução do código!";
	private $Operadres = array("+","-","*","/");
	
	private function TriggerError($nivel,$stop=false){
		switch ($nivel){
			case 1:
				$this->QuantiaErros++;
				$this->ErrosGerados .= "[quebra]Não entre com Letras, apenas números e operadores(/,*,-,+)!";
			break;
			case 2:
				$this->QuantiaErros++;
				$this->ErrosGerados .= "[quebra]Fórmula incorreta. O processo foi encerrado!";
			break;
		}
		
		if($stop===true){
			$this->ShowErrors($this->QuantiaErros);
		}
	}
	
	private function ShowErrors($erros){
			$mensagem = ($this->QuantiaErros>1) ? $this->msgErroDefaulPlural : $this->msgErroDefaul;
			$erros = str_replace("[quebra]","\r\n->",$this->ErrosGerados); 
			trigger_error("<pre>".$mensagem.$erros."</pre>",E_USER_ERROR);//Erros exibidos aqui foram gerados em qualquer parte do Processo.. Procure por "->TriggerError(" para verificar os motivos
	}
	
	protected function ExecCalc($string){

		$quantia = strlen($string);
		$result = 0;
		$numeroAtual="";	
				
			for($x=0;$x<$quantia;$x++){
					
				if(!in_array($string[$x],$this->Operadres)){
					
						$numeroAtual = $string[$x];
					
				echo $string[$x];
					
				}else{
					
				echo $string[$x];
					
					//Aqui sempre que for Operador
					//EXEC oPERAÇÃO
					//$result = $result + $numeroAtual;
					
					
				$numeroAtual = "";

				}

			}
			
			echo "<br>R:".$result;
			
	}
	
	
	
	public function VerificaCalculaString($campo){
		
			$campo = preg_replace("/[^{0-9}{+,\-,*,\/}]/sim", "", $campo,-1,$vejamos);
			
			if($vejamos!==0){
				$this->TriggerError(1);
			}
			
			if($this->QuantiaErros!==0){ //Se existir uma quantia maior que zero de erros ele é exibido
				//echo $this->ShowErrors($this->QuantiaErros);
			}
			
			$retorno = $this->ExecCalc($campo);
			echo $retorno;
	}
	
	
	
}


if(isset($_POST['num']) && trim($_POST['num'])!=""){
	 $retorno = new calc;
	 $retorno->VerificaCalculaString($_POST['num']);	
	 //trigger_error("Cannot divide by zero", E_USER_ERROR );
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.