package com.example.calculadoraresuelvederivadas;

import org.lsmp.djep.djep.DJep;
import org.nfunk.jep.Node;
import org.nfunk.jep.ParseException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.calculadoraresuelvederivadas.R;

public class Derivadas extends Activity implements OnClickListener{

	TextView resultado,escribir;
	Button resolver;
	
	
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.derivada);
        
	resultado = (TextView) findViewById(R.id.derivada);
	escribir = (TextView) findViewById(R.id.escribir);
	
	resolver = (Button) findViewById(R.id.resolver_derivada);
	
	
	resolver.setOnClickListener(new OnClickListener() {
			
	public void onClick(View v) {
		
		//creamos una string 
		String derivar = "";
		
		DJep derivada = new DJep();
		
		//agregamos el orden de las operaciones
		derivada.setImplicitMul(true);
		//aņadimos todas las reglas de las derivadas
		derivada.addStandardDiffRules();
		
		//agregamos las constantes (e,pi)
		derivada.addStandardConstants();
		//agregamos las funciones estadard (sin,cos,tan...)
		derivada.addStandardFunctions();
		//agregamos los numeros complejos
		derivada.addComplex();
		
		//nos permite que reconozca variables que no esten definidas(la hacemos true porque por defecto es false)
		derivada.setAllowUndeclared(true);
		derivada.setAllowAssignment(true);
		
		try{
			//tenemos que crear nodos es decir para conectar las funciones creadas las unas con las otras
			
			//nos identifica la funcion
			Node principal = derivada.parse((String) escribir.getText());
			//deriva la funcion respecto a x
			Node diferencia = derivada.differentiate(principal, "x");
			//Simplificamos la funcion con respecto a x
			Node simplificar = derivada.simplify(diferencia);
			//convertimos el valor que emos simplificado en la string creada al principio para poder imprimirlo
			derivar = derivada.toString(simplificar);
			resultado.setText(derivar);

		//en el catch hacemos referencia al parse que hemos importado
		}catch(ParseException exception){
			//este metodo nos ayuda a identificar qualquier error posible que haya en la aplicacion
			exception.printStackTrace();
		}
	   }
     });
}
	
	
	
	
	
	
	public void onClick(View v) {
		// TODO Auto-generated method stub
		
	}

	

}

