Ir para conteúdo

POWERED BY:

Arquivado

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

Mário Miranda

[Resolvido] Validar fórmula matemática

Recommended Posts

Boa tarde.

Preciso de ajuda com o seguinte caso:

Preciso validar fórmulas matemáticas simples, onde o código verificaria a falta de parênteses () por exemplo.

Tipo, na fórmula abaixo falta um parênteses a ser fechado:

((A+ B )/2*100

Como eu poderia fazer com que o código verificasse a falta deste parênteses?

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conta qntos foram abertos, e se corresponde à qntos foram fechados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim, mas acho que não é o bastante.

function validador(){
	var charQtd= document.getElementById('editor').value.length;
	var texto = document.getElementById('editor').value;
	var erro='';
	var a=0;
	var aberto=0;
	var fechado=0;
	for(a; a < charQtd;a++){
		if(texto.charAt(a) == '('){
			aberto++;
		}
	if(aberto > 0){	
		if(texto.charAt(a) == ')'){
			fechado++;
		}
	}	
	}
	if(fechado == aberto){
	return true;
	}else{
	alert('Fórmula inválida.');
	return false;
	}
}

Se alguém tiver algo à colocar nesta função, seria de grande ajuda.

 

Até mais. Espero que isso dê uma ajudinha a quem precise de algo parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso validar fórmulas matemáticas simples, onde o código verificaria a falta de parênteses () por exemplo.

 

O que mais você precisa validar ?

 

-> Sinais seguidos, sem nenhum número(ou parentese, colchetes, chaves) entre eles ?

ex: 2+-3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, na verdade só preciso validar parênteses, porém da maneira que está, a função é falha pelo seguinte:

Suponhamos que o usuário digite 2+)*3(

A função vai validar como true pois ela está verificando apenas a quantidade de abertos e fechados.

Mas a função matemática exemplificada agora está errada devido à ordem dos parênteses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso já resolve o problema.

O que acham?

function validador(){
	var charQtd= document.getElementById('editor').value.length;
	var texto = document.getElementById('editor').value;
	try{
	alert(eval(texto));
	}catch(err){
	alert('Fórmula inválida.');
	}

}
O javascript tenta executar a expressão criada, se não conseguir retorna o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima saída executar a função e ver se retorna algum erro durante sua execução!

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.