package com.example.calculadoraresuelvederivadas;

import com.example.calculadoraresuelvederivadas.R;

import android.content.Intent;
import android.os.Bundle;
import android.sax.TextElementListener;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Calculadora extends ActionBarActivity implements OnClickListener{

	//declaramos los atributos
		TextView TextView_principal,TextView_secundario, simbolos, simbolos2, M;
		private boolean inicio,igual,seleccionado = true ,operacion1,operacion2;
	    private double a,b,c,sin,cos,tan,asin,atan,acos,memoria,ans = 0, resultado,valor1,valor2;
	    String cadena,funciones,tipoOperaciones; 
	    Button uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,cero,suma,resta,multiplicacion,division,punto,EXP,ANS,boton_igual,borrar_todo,borrar1;
	    Button grados,radianes,shift,raiz,raiz_cubica,cuadrado,cubo,elevado_a,raiz_de,sinus,cosinus,tangent,log,ln,e,cambia_signo,pi,factorial,porcentage,diez_elevado,elevado_menos1,abre_parentesis,cierra_parentesis,atangente,acosinus,asinus,MS,Mmas;
	   
	    protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.calculadora);
	    
	    //botones numericos
	    uno = (Button) findViewById(R.id.boton1);
	    dos = (Button) findViewById(R.id.boton2);
	    tres = (Button) findViewById(R.id.boton3);
	    cuatro = (Button) findViewById(R.id.boton4);
	    cinco = (Button) findViewById(R.id.boton5);
	    seis = (Button) findViewById(R.id.boton6);
	    siete = (Button) findViewById(R.id.boton7);
	    ocho = (Button) findViewById(R.id.boton8);
	    nueve = (Button) findViewById(R.id.boton9);
	    cero = (Button) findViewById(R.id.boton0);

	    //botones operaciones
	    raiz = (Button) findViewById(R.id.raiz);
	    raiz_cubica = (Button) findViewById(R.id.raiz_cubica);
	    cuadrado = (Button) findViewById(R.id.cuadrado);
	    cubo = (Button) findViewById(R.id.cubo);
	    elevado_a= (Button) findViewById(R.id.elevado_cualquier);
	    raiz_de = (Button) findViewById(R.id.raiz_cualquier);
	    sinus = (Button) findViewById(R.id.sinus);
	    cosinus = (Button) findViewById(R.id.cosinus);
	    tangent = (Button) findViewById(R.id.tangente);
	    log = (Button) findViewById(R.id.logaritmo);
	    ln = (Button) findViewById(R.id.logaritmo_neperiano);
	    e = (Button) findViewById(R.id.e);
	    cambia_signo = (Button) findViewById(R.id.signo_menos);
	    pi = (Button) findViewById(R.id.pi);
	    factorial = (Button) findViewById(R.id.factorial);
	    MS = (Button) findViewById(R.id.MS);
	    Mmas = (Button) findViewById(R.id.Mmas);
	    diez_elevado = (Button) findViewById(R.id.diez_elevado);	    
	    elevado_menos1 = (Button) findViewById(R.id.elevado_menos_uno);
	    abre_parentesis = (Button) findViewById(R.id.abre_parentesis);
	    cierra_parentesis = (Button) findViewById(R.id.cierra_parentesis);
	    borrar_todo = (Button) findViewById(R.id.borrar);
	    borrar1 = (Button) findViewById(R.id.borrar1numero);
	    radianes = (Button) findViewById(R.id.radianes);
	    asinus = (Button) findViewById(R.id.asinus);
	    acosinus = (Button) findViewById(R.id.acosinus);
	    atangente = (Button) findViewById(R.id.atangente);
	    grados = (Button) findViewById(R.id.grados);
	    
	    //operandos
	    suma = (Button) findViewById(R.id.suma);
	    resta = (Button) findViewById(R.id.resta);
	    division = (Button) findViewById(R.id.divi);
	    multiplicacion = (Button) findViewById(R.id.multi);
	    punto = (Button) findViewById(R.id.punto);
	    EXP = (Button) findViewById(R.id.EXP);
	    ANS = (Button) findViewById(R.id.ANS);
	    boton_igual = (Button) findViewById(R.id.igual);
	    
	    //textViews
	    TextView_principal = (TextView) findViewById(R.id.principal);
	    TextView_secundario = (TextView) findViewById(R.id.secundario);
	    simbolos = (TextView) findViewById(R.id.Simbolos);
	    simbolos2 = (TextView) findViewById(R.id.simbolos2);
	    
	    //definimos el onclck de los botones
	    
	    uno.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un uno
	    			TextView_principal.setText("");
	    			TextView_principal.setText("1");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"1");
	    		}
	    		
	          }
	    });
	    
	    dos.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un dos
	    			TextView_principal.setText("");
	    			TextView_principal.setText("2");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"2");
	    		}
	    		
	          }
	    });
	    
	    tres.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un tres
	    			TextView_principal.setText("");
	    			TextView_principal.setText("3");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cantidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"3");
	    		}
	    		
	          }
	    });
	    
	    cuatro.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un cuatro
	    			TextView_principal.setText("");
	    			TextView_principal.setText("4");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"4");
	    		}
	    		
	          }
	    });
	    
	    cinco.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un cinco
	    			TextView_principal.setText("");
	    			TextView_principal.setText("5");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"5");
	    		}
	    		
	          }
	    });
	    
	    seis.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un seis
	    			TextView_principal.setText("");
	    			TextView_principal.setText("6");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"6");
	    		}
	    		
	          }
	    });
	    
	    siete.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un siete
	    			TextView_principal.setText("");
	    			TextView_principal.setText("7");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"7");
	    		}
	    		
	          }
	    });
	    
	    ocho.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un ocho
	    			TextView_principal.setText("");
	    			TextView_principal.setText("8");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"8");
	    		}
	    		
	          }
	    });
	    
	    nueve.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un nueve
	    			TextView_principal.setText("");
	    			TextView_principal.setText("9");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"9");
	    		}
	    		
	          }
	    });
	    
	    cero.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//creamos la condicion
	    		if(inicio==true){
	    			TextView_secundario.setText("");
	    			//si inicia se pondra a cero i pondra un cero
	    			TextView_principal.setText("");
	    			TextView_principal.setText("0");
	    			inicio=false;
	    		}else{//sino inicia sumara un uno a la cntidad que haya
	    			TextView_principal.setText(TextView_principal.getText()+"0");
	    		}
	    		
	          }
	    });
	    
	    punto.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		if(TextView_principal.getText().toString().contains(".")){
	    			
	    		}else{
	    			TextView_principal.setText(TextView_principal.getText()+".");
	    			inicio=false;
	    		}
	    	}
	    });
	   
	    suma.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		igual=true;
	    		inicio=true;
	    		
	    		if(operacion1=true){
	    			
	    			valor1 = Double.parseDouble((String) TextView_principal.getText());
	    			TextView_secundario.setText("");
	    			TextView_secundario.setText(TextView_principal.getText()+ "+");
	    			TextView_principal.setText("");
	    			operacion1 = false;
	    			inicio=false;
	    		}else{
	    			if(operacion2=true){
	    				
	    				valor2 = Double.parseDouble((String) TextView_principal.getText());
	    				TextView_secundario.setText(TextView_principal.getText()+ "+");
	    				TextView_principal.setText("");
	    				operacion2 = false;
	        			inicio=false;
	    			}else{
	    				TextView_secundario.setText(TextView_principal.getText()+ "+");
	    				Operaciones(resultado,valor2);
	    				TextView_principal.setText("");
	    			}
	    		}
	    		tipoOperaciones="+";
	    	}
	    });
	    
	    resta.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		igual=true;
	    		inicio=true;
	    		
	    		if(operacion1=true){
	    			
	    			valor1 = Double.parseDouble((String) TextView_principal.getText());
	    			TextView_secundario.setText(TextView_principal.getText()+ "-");
	    			TextView_principal.setText("");
	    			operacion1 = false;
	    			inicio=false;
	    		}else{
	    			if(operacion2=true){
	    				
	    				valor2 = Double.parseDouble((String) TextView_principal.getText());
	        			TextView_secundario.setText(TextView_principal.getText()+ "-");
	        			operacion2 = false;
	        			inicio=false;
	        			
	    			}else{
	    				TextView_secundario.setText(TextView_principal.getText()+ "-");
	    				Operaciones(resultado,valor2);
	    			}
	    		}
	    		tipoOperaciones="-";
	    	}
	    });
	    
	    multiplicacion.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		igual=true;
	    		inicio=true;
	    		
	    		if(operacion1=true){
	    			
	    			valor1 = Double.parseDouble((String) TextView_principal.getText());
	    			TextView_secundario.setText(TextView_principal.getText()+ "*");
	    			TextView_principal.setText("");
	    			operacion1 = false;
	    			inicio=false;
	    		}else{
	    			if(operacion2=true){
	    				valor2 = Double.parseDouble((String) TextView_principal.getText());
	        			TextView_secundario.setText(TextView_principal.getText()+ "*");
	        			operacion2 = false;
	        			inicio=false;
	    			}else{
	    				TextView_secundario.setText(TextView_principal.getText()+ "*");
	    				Operaciones(resultado,valor2);
	    			}
	    		}
	    		tipoOperaciones="*";
	    	}
	    });
	    division.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//creamos la condicion
	    		igual=true;
	    		inicio=true;
	    		
	    		if(operacion1=true){
	    			
	    			valor1 = Double.parseDouble((String) TextView_principal.getText());
	    			TextView_secundario.setText(TextView_principal.getText()+ "/");
	    			TextView_principal.setText("");
	    			operacion1 = false;
	    			inicio=false;
	    		}else{
	    			if(operacion2=true){
	    				valor2 = Double.parseDouble((String) TextView_principal.getText());
	        			TextView_secundario.setText(TextView_principal.getText()+ "/");
	        			operacion2 = false;
	        			inicio=false;
	    			}else{
	    				TextView_secundario.setText(TextView_principal.getText()+ "/");
	    				Operaciones(resultado,valor2);
	    			}
	    		}
	    		tipoOperaciones="/";
	    	}
	    });
	    
	    boton_igual.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		inicio = true;
	    		operacion1 = true;
	    		
	    		if(igual=true){
	    			//creamos la condicion si no se a ejecutado ninguna operacion
	    			if(tipoOperaciones== null){
	    				TextView_secundario.setText(TextView_principal.getText());
	    				TextView_principal.setText("");
	    				
	    			}else{//sino es nulo
	    				//guardamos en el valor 2 lo que hay en el textview principal
	    				valor2 = Double.parseDouble((String)TextView_principal.getText());
	    				//en el textview secundario imprimimos lo que habia en el mas lo del principal
	    				TextView_secundario.setText((String)TextView_secundario.getText()+(String)TextView_principal.getText());
	    			    //ejecutamos el metodo operaciones
	    				Operaciones(valor1,valor2);
	    				//ponemos el igual en false
	    			    igual = false;
	    			}
	    		}else{//si el igual es = a false
	    			Operaciones(valor1,valor2);
	    		}
	    	}
	    
	    });
	    raiz.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//guardamos en el valor 1 lo del text principal
	    		valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		//creamos la condicion si es inferior superior a 0 k opere
	    		if(valor1 >=0){
	    			
	    			TextView_secundario.setText("√("+valor1+")");
	    			TextView_principal.setText(Math.sqrt(valor1)+ " ");
	    			inicio =true;
		    		ans = Double.parseDouble((String) TextView_principal.getText());
	    			//sino es superior k salga error
	    		}else{
	    			TextView_principal.setText("Error ");
	    			TextView_secundario.setText(" ");
	    			inicio = true;
	    		}
	    		
	    	}
	    	
	    });
	    cambia_signo.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    	    valor1 = Double.parseDouble((String) TextView_principal.getText());
	    	    TextView_principal.setText((-1*valor1) + "");
	    	    }
	    		
	    	
	    	
	    });
	    borrar_todo.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//borramos lo de los textviews
	    		TextView_principal.setText("0");
	    		TextView_secundario.setText(" ");
	    		//las boolean las igualamos a true
	    		inicio=true;
	    		operacion1 = true;
	    		operacion2 = true;
	    		igual = true;
	    		//las funciones las dejamos en blanco
	    		funciones = "";
	    		//los valores los dejamos a 0
	    		valor1 = 0;
	    		valor2 = 0;
	    		resultado = 0;
	    		
	    	}
	    	
	    });
	    borrar1.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    	//borramos el ultimo valor
	    		//creamos la condicion si no es igual a 0
	    		if(TextView_principal.getText().length()!=0){
	    			//el textview retrocedera un paso a tras, es decir, borrara 
	                TextView_principal.setText(((String) TextView_principal.getText()).substring(0, TextView_principal.getText().length()-1));
	            }
	    		
	    	}
	    	
	    });
	    pi.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//damos valor al nombre pi
	    		double π=Math.PI;
	    		
	    		if(inicio==true){
	    		TextView_secundario.setText("π");
	    		TextView_principal.setText(π+"");
	    		}
	    		if(inicio==false){
		    		TextView_secundario.setText(TextView_principal.getText()+"π");
		    		valor1 = Double.parseDouble((String)TextView_principal.getText());
		    		TextView_principal.setText((valor1*π)+"");
		    		ans = Double.parseDouble((String) TextView_principal.getText());

	    		}
	    	}
	    	
	    });
	    elevado_menos1.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		inicio=true;
	    		//guardamos lo que haya en la variable 1
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText(valor1 + " ^-1");
	    		double elevadoa = Math.pow(valor1, -1);
	    		//hacemos la funcion (el primer valor es a base i el otro el exponente)
	    		TextView_principal.setText(elevadoa+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
	    });
	    elevado_a.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		//guardamos lo que haya en la variable 1
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText(valor1+"^");
	    		tipoOperaciones="potencia";
	    		operacion1=true;
	    		igual=true;
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    	}
	    	
	    });
	    raiz_de.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		valor1 = Double.parseDouble((String)TextView_principal.getText());
	    		TextView_secundario.setText(valor1 + " ^√(");
	    		//marcas el tipo de operacion para llamarla en el metodo Operaciones
	    		tipoOperaciones="raiz_de";
	    		//hacemos falsa la operacion1
	    		operacion1=false;
	    		//ponemos la boolean igual en true
	    		igual=true;
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    		
	    	}
	    	
	    });
	    cubo.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		inicio=true;
	    		
	    		valor1 = Double.parseDouble((String)TextView_principal.getText());
	    		TextView_secundario.setText( valor1+"^3 ");
	    		
	    		double cubo = Math.pow(valor1, 3);
	    		
	    		TextView_principal.setText(cubo+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
	    });
	    factorial.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		inicio= true;
	    		
	    		a=1;
	    		//guardamos el valor 1
	    		valor1 = Double.parseDouble((String)TextView_principal.getText());
	    		TextView_secundario.setText(valor1 + "!" );
	    		//creamos un ciclo for
	    		for(b=1; b<=valor1; b++){
	    			//igualamos a = a*b
	    			a=a*b;
	    			}
	    		
	    		TextView_principal.setText(a+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    
	    });
	    e.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		//damos valor al numero e
	            double e=Math.E;
	            
	            if(inicio==true){
	    		TextView_secundario.setText("e");
	    		TextView_principal.setText(e+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	            }
	            else{
	            	TextView_secundario.setText(TextView_principal.getText()+"e");
		    		valor1 = Double.parseDouble((String)TextView_principal.getText());
		    		TextView_principal.setText((valor1*e)+"");
		    		ans = Double.parseDouble((String) TextView_principal.getText());

	            }
	    		
	    	}
	    
	    });
	    raiz_cubica.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		double cuberoot=Math.cbrt(valor1);
	    		
	    		TextView_secundario.setText("3^√"+valor1);
	    		TextView_principal.setText(cuberoot+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    		
	    	}
	    
	    });
	    cuadrado.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		inicio=true;
	            valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		double cuadrado=Math.pow(valor1,2);
	    		
	    		TextView_secundario.setText(valor1+"^2");
	    		TextView_principal.setText(cuadrado+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
	    });
	    diez_elevado.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		double eleva10=Math.pow(10,valor1);
	    		
	    		TextView_secundario.setText("10^");
	    		
	            valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		TextView_principal.setText(eleva10+"");

	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
	    });
	    EXP.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	            valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		double EXP=Math.exp(valor1);
	    		
	    		TextView_secundario.setText("*10^ "+valor1);
	    		TextView_principal.setText(EXP+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
	    });
	    log.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	            valor1= Double.parseDouble((String)TextView_principal.getText());
	    		
	    		double logaritmo=Math.log10(valor1);
	    		
	    		TextView_secundario.setText("log "+valor1);
	    		TextView_principal.setText(logaritmo+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		inicio=true;
	    	}
	    	
	    });
	    Mmas.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	            memoria = memoria + Double.parseDouble((String) TextView_principal.getText());
	    		
	    		
	    	}
	    	
	    });
	    MS.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		
	            TextView_principal.setText(memoria+"");
	    		
	    		
	    	}
	    	
	    });
	    ANS.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		
	    		TextView_secundario.setText("");
	    		TextView_principal.setText(ans+"");
	    		
	    		
	    	}
	    
	    });
	    ln.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		
	    		valor1 = Double.parseDouble((String)TextView_principal.getText());
	    		
	    		double ln= Math.log(valor1);
	    		
	    		TextView_secundario.setText("ln "+valor1);
	    		TextView_principal.setText(ln+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    	}
	    	
	    });
	    
	    cosinus.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "cos";
	    		trigonometria();
	    	}
	    	
	    });
	    tangent.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "tan";
	    		trigonometria();
	    	}
	    	
	    });
	    sinus.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "sin";
	    		trigonometria();
	    	}
	    	
	    });
	    acosinus.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "acos";
	    		trigonometria();
	    	}
	    	
	    });
	    asinus.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "asin";
	    		trigonometria();
	    	}
	    	
	    });
	    atangente.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		funciones = "atan";
	    		trigonometria();
	    	}
	    	
	    });
	    radianes.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		trigonometria();
	    	}
	    	
	    });
	    abre_parentesis.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		TextView_principal.setText("( "+TextView_principal.getText());
	    	}
	    	
	    });
	    cierra_parentesis.setOnClickListener(new OnClickListener(){
	    	//definimos la funcion que realizara al pulsar el boton
	    	public void onClick(View v) {
	    		TextView_principal.setText(TextView_principal.getText()+" )");
	    	}
	    	
	    });
	    
	   }
	    public void trigonometria(){
	    	
	        if(radianes.isSelected()){
	        		
	        	
	        	if(funciones=="atan"){
	        		
	        	   valor1 = Double.parseDouble((String) TextView_principal.getText());
	        	   TextView_secundario.setText("sin ( "+valor1+" )");
	        	   //realizamos la operacion
	        	   atan = Math.atan(valor1);
	        	   TextView_principal.setText(sin+"");
	               ans = Double.parseDouble((String) TextView_principal.getText());
	        	}
	        	
	    		if(funciones=="acos"){
	    			
	        	    valor1 = Double.parseDouble((String) TextView_principal.getText());
	        		TextView_secundario.setText("acos ( "+valor1+" )");
	        		//realizamos la operacion 
	        		acos = Math.acos(valor1);
	        		TextView_principal.setText(acos+"");
	        		ans = Double.parseDouble((String) TextView_principal.getText());
	        	}
	    			
	    		if(funciones=="asin"){
	        		
	    			//guardamos en el valor 1 
	        		valor1 = Double.parseDouble((String) TextView_principal.getText());
	        		TextView_secundario.setText("asin ( "+valor1+" )");
	        		//realizamos la operacion 
	        		asin = Math.sin(valor1);
	        		TextView_principal.setText(asin+"");
	        		ans = Double.parseDouble((String) TextView_principal.getText());
	        		
	    		}
	    		
	    	    if(funciones=="sin"){
	    		   //guardamos en el valor1 lo del textview principal
	    		   valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		   //en el textview secundario ponemos 
	    		   TextView_secundario.setText("sin ( "+valor1+" )");
	    		   //guardamos en sin la operacion
	    		   sin = Math.sin(valor1);
	    		   //lo imprimimos
	    		   TextView_principal.setText(sin+"");
	    		   ans = Double.parseDouble((String) TextView_principal.getText());
	    		}
	    	
	    	    if(funciones=="cos"){
	    		   valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		   TextView_secundario.setText("cos ( "+valor1+" )");
	    		   //realizamos la operacion
	    		   cos = Math.cos(valor1);
	    		   TextView_principal.setText(cos+"");
	    		   ans = Double.parseDouble((String) TextView_principal.getText());
	    		}    	
	    	
	    	if(funciones=="tan"){
	    		   valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		   TextView_secundario.setText("tan ( "+valor1+" )");
	    		   //realizamos la operacion
	    		   tan = Math.tan(valor1);
	    		   TextView_principal.setText(sin+"");
	    		   ans = Double.parseDouble((String) TextView_principal.getText());
	    		}
	    	
	    	
	    	
	    }else{
	        		
	    	if(funciones=="atan"){
	    		
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText("sin ( "+valor1+" )");
	    		//realizamos la operacion
	    		atan = Math.atan(valor1)*180/Math.PI;
	    		TextView_principal.setText(sin+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
	    	
			if(funciones=="acos"){
				
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText("acos ( "+valor1+" )");
	    		//realizamos la operacion 
	    		acos = Math.acos(valor1)*180/Math.PI;
	    		TextView_principal.setText(acos+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}
			
			if(funciones=="asin"){
				
	    		//guardamos en el valor 1 
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText("asin ( "+valor1+" )");
	    		//realizamos la operacion 
	    		asin = Math.sin(valor1)*180/Math.PI;
	    		TextView_principal.setText(asin+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		}
	          }	    		
	        //creamos la condicion dependiendo de el tipo de funcion que sea
	    	if(funciones=="sin"){
	    		//guardamos en el valor1 lo del textview principal
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		//en el textview secundario ponemos 
	    		TextView_secundario.setText("sin ( "+valor1+" )");
	    		//guardamos en sin la operacion
	    		sin = Math.sin(Math.PI*(valor1)/180);
	    		//lo imprimimos
	    		TextView_principal.setText(sin+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    	}  
	    	
	    	if(funciones=="cos"){
	    		
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText("cos ( "+valor1+" )");
	    		//realizamos la operacion
	    		cos = Math.cos(Math.PI*(valor1)/180);
	    		TextView_principal.setText(cos+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    	}    	
	    	
	    	if(funciones=="tan"){
	    		
	    		valor1 = Double.parseDouble((String) TextView_principal.getText());
	    		TextView_secundario.setText("tan ( "+valor1+" )");
	    		//realizamos la operacion
	    		tan = Math.tan(Math.PI*(valor1)/180);
	    		TextView_principal.setText(sin+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		
	    	}
	    	
	    }
	    
	    private void Operaciones(double valor1,double valor2){
	    	  
	    	//definimos la funcion de la raiz elevada a cualquier numero
	    	if(tipoOperaciones == "raiz_de"){
		         //guardamos el valor2
	    		b = Double.parseDouble((String)TextView_principal.getText());
	    		//guardamos en la variable a 1
	    		a=1;
	    		//guardamos en la variable c 1/valor2 que es lo mismo que la raiz
	    		c= a/b;
	    		resultado=(int) Math.pow(valor1,c);
	    		//imprimimos en el text view principal el valor 1 i lo elevamos a la division(1/valor2==raiz)
	    		TextView_principal.setText(resultado+"");
	    		ans = Double.parseDouble((String) TextView_principal.getText());
			
			}
	    	//definimos la potencia
			if(tipoOperaciones == "potencia"){
				 
		         valor2=Double.parseDouble((String)TextView_principal.getText());
		         //definimos la operacion
				 resultado = Math.pow(valor1,valor2);
				 TextView_principal.setText(resultado + " ");
				 
		    	 ans = Double.parseDouble((String) TextView_principal.getText());
			
			}
	    	//definimos las funciones en caso de suma
			 if(tipoOperaciones == "+"){
				//el resultado sera igual a la suma de los valores 1 i 2
				resultado = valor1+valor2;
				//imprimimos ese resultado en el textview principal
				TextView_principal.setText(resultado+ "");
				//guardamos en el valor 1 lo que obtengamos del resultado
				valor1= Double.parseDouble((String)TextView_principal.getText());

	    		ans = Double.parseDouble((String) TextView_principal.getText());
			 }
			    //definimos la resta
			 if(tipoOperaciones == "-"){
				 if(operacion1==true){
				resultado = valor1-valor2;
				TextView_principal.setText(resultado+ "");
				valor1= Double.parseDouble((String)TextView_principal.getText());
	    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		}else{
	    			resultado = valor1-valor2;
					TextView_principal.setText(resultado+ "");
					valor1= Double.parseDouble((String)TextView_principal.getText());
		    		ans = Double.parseDouble((String) TextView_principal.getText());
	    		}
			 }
				//definimos la multiplicacion
			 if(tipoOperaciones == "*"){
				resultado = valor1*valor2;
				TextView_principal.setText(resultado+ "");
				valor1= Double.parseDouble((String)TextView_principal.getText());
	    		ans = Double.parseDouble((String) TextView_principal.getText());
			 }
				//definimos la division
			 if(tipoOperaciones == "/"){
				//creamos una condicion en caso d k valor 2 sea 0
				if(valor2 == 0){
					TextView_principal.setText("Error ");
					
				}else{
				resultado = valor1/valor2;
				TextView_principal.setText(resultado+ "");
				valor1= Double.parseDouble((String)TextView_principal.getText());
	    		ans = Double.parseDouble((String) TextView_principal.getText());
				}
			  }
			 
	    }
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			
		}
}

