• Viernes 8 de Noviembre de 2024, 08:13

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Gaug

Páginas: [1] 2
1
Matlab / Re: como limpiar un axes
« en: Miércoles 27 de Abril de 2011, 04:11 »
Por eso, ponlo en el callback de tu push button.

2
Matlab / Re: como limpiar un axes
« en: Miércoles 27 de Abril de 2011, 03:54 »
Sólo pondrías

CLA;

Y ya, pruébalo.

3
Matlab / Re: como limpiar un axes
« en: Miércoles 27 de Abril de 2011, 02:57 »
Si es el programa de Ibarra el comando para limpiar todos los axes del GUI es CLA.

4
Java / Pasar un Applet a Aplicación movil para celular.
« en: Jueves 19 de Noviembre de 2009, 06:55 »
Hola.

Tengo un archivo en código Java para applet y me gustaría pasarlo a celular, osea que sea ejecutable dentro de un móvil.

Este applet evalua una ecuacion y da el resultado, si gustan pueden probarlo en netbeans, les pego el código:

import java.applet.*;
import java.util.*;
import java.awt.*;
 
public class parser extends java.applet.Applet {
    Parseador miparser=new Parseador(); //Constructor del parseador
    String expresion=new String(); //Expresión a parsear
    double valor=0; //Valor en el que se va a evaluar
    TextField inputexpresion = new TextField("x + 5"); //Textfield donde se digita la expresión a parsear
    TextField inputvalor = new TextField("0",5); //Textfield donde se digita el valor a evaluar en la expresión
    Button boton= new Button("Evaluar la expresión"); //Botón para evaluar
    TextField outputparseo = new TextField("          "); //Resultado de parsear la expresión
    TextField outputevaluar = new TextField("         "); //Resultado de la evaluación en la expresión
    Label info = new Label("Información en extremo importante           ", Label.CENTER); //Label donde se dan los errores
 
    public void init(){ //Todo se pone en el applet
        add(inputexpresion);
        add(inputvalor);
        add(boton);
        add(outputparseo);
        add(outputevaluar);
        add(info);
    }//init
 
    public boolean action(Event evt, Object arg){
        if (evt.target instanceof Button){ //Si se apretó el botón
            try{
                info.setText(""); //Se pone el Label de los errores vacío
                expresion=inputexpresion.getText(); //Se lee la expresión
                valor=Double.valueOf(inputvalor.getText()).doubleValue(); //Se lee el valor a evaluar
                outputparseo.setText(miparser.parsear(expresion)); //Se parsea la expresión
                outputevaluar.setText(""+redondeo(miparser.f(valor),5)); //Se evalúa el valor y se redondea
            }catch(Exception e){ //Si hubo error lo pone en el Label correspondiente
                info.setText(e.toString());
            }
        }//if del botón
        return true;
    }//action
 
    /*
     *Se redondea un número con los decimales dados
     */
    private double redondeo(double numero, int decimales){
        return ((double)Math.round(numero*Math.pow(10,decimales)))/Math.pow(10,decimales);
    }
 
}//PolCero
 
 
/**
 
 *
 *Clase que parsea una expresión matemática.
 *Para parsear se debe crear un objeto (Obj) de tipo Parseador.
 *Para parsear expr se escribe Obj.parsear(Expr).
 *La función devuelve un String con Expr en notación postfija, además
 *el programa también guarda de manera automática la última expresión parseada.
 *Para evaluar el número x en la expresión se utilizar Obj.f(x) para evaluar
 *en la última expresión o se puede pasar una expresión en notación postfija
 *escribiendo Obj.f(exprEnPostfija, x). 
 *
 *La variable permitida es x.
 *La expresión puede contener las constantes pi y e.
 *Los operadores válidos de la expresión son:
 *    OPERACIÓN           OPERADOR
 *  suma                        +
 *  resta                       -
 *  multiplicación              *
 *  división                    /
 *  potencias                   ^
 *  módulo                      %
 *  paréntesis                  ( )
 *  logaritmo (base e)          ln( )
 *  logaritmo (base 10)         log( )
 *  valor absoluto              abs( )
 *  número aleatorio            rnd( )
 *  seno                        sen( )
 *  coseno                      cos( )
 *  tangente                    tan( )
 *  secante                     sec( )
 *  cosecante                   csc( )
 *  cotangente                  cot( )
 *  signo                       sgn( )
 *  arcoseno                    asen( )
 *  arcocoseno                  acos( )
 *  arcotangente                atan( )
 *  arcosecante                 asec( )
 *  arcocosecante               acsc( )
 *  arcocotangente              acot( )
 *  seno hiperbólico            senh( )
 *  coseno hiperbólico          cosh( )
 *  tangente hiperbólica        tanh( )
 *  secante hiperbólica         sech( )
 *  cosecante hiperbólica       csch( )
 *  cotangente hiperbólica      coth( )
 *  raices cuadradas            sqrt( )
 *  arcoseno hiperbólico        asenh( )
 *  arcocoseno hiperbólico      acosh( )
 *  arcotangente hiperbólica    atanh( )
 *  arcosecante hiperbólica     asech( )
 *  arcocosecante hiperbólica   acsch( )
 *  arcocotangente hiperbólica  acoth( )  
 *  redondeo                    round( )
 *
 *Algunos ejemplos de expresiones válidas son:
 *x+cos(3)*tan(x^(2*pi*x-1))/acos(1/2)
 *cosh(x)+abs(1-x^2)%3
 *
 *
 */
 
//Clases importadas
 
 
class Parseador{
 
    //VARIABLES PRIVADAS
   
    //Guarda la última expresión que se tradujo a postfijo para poder evaluar en ella sin dar una nueva expresión
    private String ultimaParseada;
   
   
    //CONSTRUCTORES
   
   
    public Parseador(){
        ultimaParseada="0";
    }
 
 
    //FUNCIONES PUBLICAS
   
   
    /**
     *La función que parsea la expresión a notación postfija.
     *@param expresion El string con la expresión a parsear.
     *@return Un String con la expresión parseada en notación postfija.
     *@exception SintaxException Error de escritura en la expresión.
     */
    public String parsear(String expresion) throws SintaxException{
        Stack PilaNumeros=new Stack(); //Pila donde se guardarán los números al parsear
        Stack PilaOperadores= new Stack(); //Pila donde se guardarán los operadores al parsear
        String expr=quitaEspacios(expresion.toLowerCase());  //La expresión sin espacios ni mayúsculas.
        String fragmento; //Guarda el fragmento de texto que se esté utilizando en el momento (ya sea un número, un operador, una función, etc.)
        int pos=0, tamano=0; //pos marca la posición del caracter que se está procesando actualmente en el String. tamano indica el tamaño del texto que se procesa en ese momento.
        byte cont=1; //contador indica el número de caracteres que se sacan del string en un momento indicado, este no puede ser más de seis (la función con más caracteres tiene seis)
        //Este es un arreglo de Strings que guarda todas las funciones y expresiones permitidas, incluso números, y los acomoda en cada posición de acuerdo a su tamaño
        final String funciones[]={"1 2 3 4 5 6 7 8 9 0 ( ) x e + - * / ^ %",
                            "pi",
                            "ln(",
                            "log( abs( sen( sin( cos( tan( sec( csc( cot( sgn(",
                            "rnd() asen( asin( acos( atan( asec( acsc( acot( senh( sinh( cosh( tanh( sech( csch( coth( sqrt(",
                            "round( asenh( acosh( atanh( asech( acsch( acoth("};
        //Todas las funciones que trabajan como paréntesis de apertura están aquí.
        final String parentesis="( ln log abs sen sin cos tan sec csc cot sgn asen asin acos atan asec acsc acot senh sinh cosh tanh sech csch coth sqrt round asenh asinh acosh atanh asech acsch acoth";
        /*
         *Esta variable 'anterior' se utiliza para saber cuál había sido la última
         *expresión parseada y verificar si hay un error en la expresión o si hay
         *algún menos unario en la expresión, se utiliza:
         *0 : no ha parseado nada
         *1 : un número (número, pi, e, x)
         *2 : un operador binario (+ - * / ^ %)
         *3 : un paréntesis (( sen( cos( etc.)
         *4 : cierre de paréntesis ())
         *Si no se ha parseado nada puede ser cualquier cosa menos (+ * / ^ %)
         *Si el anterior fue un número puede seguir cualquier cosa
         *Si lo anterior fue un operador puede seguir cualquier cosa menos otro operador (con excepción de -)
         *Si lo anterior fue un paréntesis puede seguir cualquier cosa menos (+ * / ^ %)
         *Si lo anterior fue un cierre de paréntesis debe seguir un operador, un número (en cuyo caso hay un por oculto) u otro paréntesis (también hay un por oculto)
         */
        byte anterior=0;
       
        try{
            while(pos<expr.length()){ //Haga mientras la posición sea menor al tamaño del String (mientras este dentro del string)
                tamano=0;
                cont=1;
                while (tamano==0 && cont<=6){ //Este while revisa si el pedazo del texto sacado concuerda con algo conocido
                    if(pos+cont<=expr.length() && funciones[cont-1].indexOf(expr.substring(pos,pos+cont))!=-1){
                        tamano=cont;
                    }
                    cont++;
                }
               
                if (tamano==0){ //Si no encontró nada es por que hubo un error, se pone la ùltima parseada en cero y se lanza una excepción
                    ultimaParseada="0";
                    throw new SintaxException("Error en la expresión");
                }else if(tamano==1){ //Si encontró algo de tamaño uno
                    if(isNum(expr.substring(pos,pos+tamano))){ //Si es un número se encarga de sacarlo completo
                        if(anterior==1 || anterior==4){//si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        fragmento=""; //aquí se guardará el número sacado
                        do{ //Hágalo mientras lo que siga sea un número o un punto o una coma
                            fragmento=fragmento+expr.charAt(pos);
                            pos++;
                        }while(pos<expr.length() && (isNum(expr.substring(pos,pos+tamano)) || expr.charAt(pos) == '.' || expr.charAt(pos) == ','));
                        try{ //Trate de convertirlo en un número
                            Double.valueOf(fragmento);
                        }catch(NumberFormatException e){ //Si no pudo pasarlo a número hay un error
                            ultimaParseada="0";
                            throw new SintaxException("Número mal digitado");
                        }
                        PilaNumeros.push(new String(fragmento));
                        anterior=1;
                        pos--;
                    }else if (expr.charAt(pos)=='x' || expr.charAt(pos)=='e'){ //Si es un número conocido
                        if(anterior==1 || anterior==4){//si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        PilaNumeros.push(expr.substring(pos,pos+tamano));
                        anterior=1;
                    }else if (expr.charAt(pos)=='+' || expr.charAt(pos)=='*' || expr.charAt(pos)=='/' || expr.charAt(pos)=='%'){ //Si es suma, multiplicación o división
                        if (anterior==0 || anterior==2 || anterior==3)//Hay error si antes de los operadores no hay nada, hay un paréntesis de apertura o un operador
                            throw new SintaxException("Error en la expresión");
                       
                        sacaOperadores(PilaNumeros, PilaOperadores, expr.substring(pos,pos+tamano));
                        anterior=2;
                    }else if (expr.charAt(pos)=='^'){ //Si es una potencia
                        if (anterior==0 || anterior==2 || anterior==3) //Hay error si antes de un apotencia no hay nada, hay un paréntesis de apertura o un operador
                            throw new SintaxException("Error en la expresión");
                           
                        PilaOperadores.push(new String("^"));
                        anterior=2;
                    }else if (expr.charAt(pos)=='-'){ //Si es una resta
                        if(anterior==0 || anterior==2 || anterior==3){//si hay un menos unario
                            PilaNumeros.push(new String("-1"));
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }else{//si el menos es binario
                            sacaOperadores(PilaNumeros, PilaOperadores, "-");
                        }
                        anterior=2;
                    }else if (expr.charAt(pos)=='('){
                        if (anterior==1 || anterior == 4){ //si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        PilaOperadores.push(new String("("));
                        anterior=3;
                    }else if (expr.charAt(pos)==')'){
                        if(anterior!=1 && anterior !=4) //Antes de un cierre de paréntesis sólo puede haber un número u otro cierre de paréntesis, sino hay un error
                            throw new SintaxException("Error en la expresión");
                       
                        while(!PilaOperadores.empty() && parentesis.indexOf(((String)PilaOperadores.peek()))==-1){
                            sacaOperador(PilaNumeros, PilaOperadores);
                        }
                        if(!((String)PilaOperadores.peek()).equals("(")){
                            PilaNumeros.push(new String(((String)PilaNumeros.pop()) + " " + ((String)PilaOperadores.pop())));
                        }else{
                            PilaOperadores.pop();
                        }
                        anterior=4;
                    }
                }else if(tamano>=2){ //Si lo encontrado es de tamaño dos o mayor (todas las funciones se manejan igual)
                    fragmento=expr.substring(pos,pos+tamano);
                    if(fragmento.equals("pi")){ //Si es el número pi
                        if(anterior==1 || anterior==4){//si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        PilaNumeros.push(fragmento);
                        anterior=1;
                    }else if(fragmento.equals("rnd()")){ //Si es la función que devuelve un número aleatorio (la única función que se maneja como un número)
                        if(anterior==1 || anterior==4){//si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        PilaNumeros.push("rnd");
                        anterior=1;
                    }else{ //Si es cualquier otra función
                        if (anterior==1 || anterior == 4){ //si hay una multiplicación oculta
                            sacaOperadores(PilaNumeros, PilaOperadores, "*");
                        }
                        PilaOperadores.push(fragmento.substring(0,fragmento.length()-1)); //Se guarda en la pila de funciones sin el paréntesis de apertura (en postfijo no se necesita)
                        anterior=3;
                    }
                }
                pos+=tamano;
            }
       
            //Procesa al final
            while(!PilaOperadores.empty()){ //Saca todos los operadores mientras la pila no esté vacía
                if(parentesis.indexOf((String)PilaOperadores.peek())!=-1)
                    throw new SintaxException("Hay un paréntesis de más");
                sacaOperador(PilaNumeros, PilaOperadores);
            }
       
        }catch(EmptyStackException e){ //Si en algún momento se intenta sacar de la pila y está vacía hay un error
            ultimaParseada="0";
            throw new SintaxException("Expresión mal digitada");
        }
       
        ultimaParseada=((String)PilaNumeros.pop()); //Se obtiene el resultado final
       
        if(!PilaNumeros.empty()){ //Si la pila de números no quedó vacía hay un error
            ultimaParseada="0";
            throw new SintaxException("Error en la expresión");
        }
       
        return ultimaParseada; //Se devuelve el resultado evaluado
    }//Parsear
   
    /**
     *Esta es la función que evalúa una expresión parseada en un valor double.
     *@param expresionParseada Esta es una expresión en notación postfija (se puede obtener con la función parsear).
     *@param x El valor double en el que se evaluará la función.
     *@return El resultado (un valor double) de evaluar x en la expresión.
     *@exception ArithmeticException Error al evaluar en los reales.
     */
    public double f(String expresionParseada, double x) throws ArithmeticException{
        Stack pilaEvaluar = new Stack(); //Pila de doubles para evaluar
        double a, b; //Estos valores son los que se van sacando de la pila de doubles
        StringTokenizer tokens=new StringTokenizer(expresionParseada); //La expresión partida en tokens
        String tokenActual; //El token que se procesa actualmente
       
        try{
            while(tokens.hasMoreTokens()){ //Haga mientras hayan más tokens
                tokenActual=tokens.nextToken();
                /*
                 *La idea aquí es sacar el token que sigue y verificar qué es ese
                 *token y manejarlo de manera:
                 *Si es un número se introduce en la pila de números
                 *Si es una función se sacan el valor o los valores necesarios de la pila
                 *de números y se mete el valor evaluado en la función correspondiente (u
                 *operador correspondiente).
                 */
                if(tokenActual.equals("e")){ //Si es el número e
                    pilaEvaluar.push(new Double(Math.E));
                }else if(tokenActual.equals("pi")){//Si es el número pi
                    pilaEvaluar.push(new Double(Math.PI));
                }else if(tokenActual.equals("x")){//Si es una x se introduce el valor a evaluar por el usuario
                    pilaEvaluar.push(new Double(x));
                }else if(tokenActual.equals("+")){//Si es una suma se sacan dos números y se suman
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(a+b));
                }else if(tokenActual.equals("-")){//Si es resta se sacan dos valores y se restan (así con todos los operadores)
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(a-b));
                }else if(tokenActual.equals("*")){//Multiplicación
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(a*b));
                }else if(tokenActual.equals("/")){//División
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(a/b));
                }else if(tokenActual.equals("^")){//Potencia
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.pow(a,b)));
                }else if(tokenActual.equals("%")){//Resto de la división entera
                    b=((Double)pilaEvaluar.pop()).doubleValue();
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(a%b));
                }else if(tokenActual.equals("ln")){//Si es logaritmo natural sólo se saca un valor de la pila y se evalúa
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log(a)));
                }else if(tokenActual.equals("log")){//Logaritmo en base 10
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log(a)/Math.log(10)));
                }else if(tokenActual.equals("abs")){//Valor absoluto
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.abs(a)));
                }else if(tokenActual.equals("rnd")){//Un número a random simplemente se mete en la pila de números
                    pilaEvaluar.push(new Double(Math.random()));
                }else if(tokenActual.equals("sen") || tokenActual.equals("sin")){ //Seno
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.sin(a)));
                }else if(tokenActual.equals("cos")){//Coseno
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.cos(a)));
                }else if(tokenActual.equals("tan")){//Tangente
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.tan(a)));
                }else if(tokenActual.equals("sec")){//Secante
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(1/Math.cos(a)));
                }else if(tokenActual.equals("csc")){//Cosecante
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(1/Math.sin(a)));
                }else if(tokenActual.equals("cot")){//Cotangente
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(1/Math.tan(a)));
                }else if(tokenActual.equals("sgn")){//Signo
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(sgn(a)));
                }else if(tokenActual.equals("asen") || tokenActual.equals("asin")){ //Arcoseno
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.asin(a)));
                }else if(tokenActual.equals("acos")){//Arcocoseno
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.acos(a)));
                }else if(tokenActual.equals("atan")){//Arcotangente
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.atan(a)));
                }else if(tokenActual.equals("asec")){//Arcosecante
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.acos(1/a)));
                }else if(tokenActual.equals("acsc")){//Arcocosecante
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.asin(1/a)));
                }else if(tokenActual.equals("acot")){//Arcocotangente
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.atan(1/a)));
                }else if(tokenActual.equals("senh") || tokenActual.equals("sinh")){//Seno hiperbólico
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double((Math.exp(a)-Math.exp(-a))/2));
                }else if(tokenActual.equals("cosh")){//Coseno hiperbólico
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double((Math.exp(a)+Math.exp(-a))/2));
                }else if(tokenActual.equals("tanh")){//tangente hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double((Math.exp(a)-Math.exp(-a))/(Math.exp(a)+Math.exp(-a))));
                }else if(tokenActual.equals("sech")){//Secante hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(2/(Math.exp(a)+Math.exp(-a))));
                }else if(tokenActual.equals("csch")){//Cosecante hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(2/(Math.exp(a)-Math.exp(-a))));
                }else if(tokenActual.equals("coth")){//Cotangente hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double((Math.exp(a)+Math.exp(-a))/(Math.exp(a)-Math.exp(-a))));
                }else if(tokenActual.equals("asenh") || tokenActual.equals("asinh")){ //Arcoseno hiperbólico
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log(a+Math.sqrt(a*a+1))));
                }else if(tokenActual.equals("acosh")){//Arcocoseno hiperbólico
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log(a+Math.sqrt(a*a-1))));
                }else if(tokenActual.equals("atanh")){//Arcotangente hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log((1+a)/(1-a))/2));
                }else if(tokenActual.equals("asech")){//Arcosecante hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log((Math.sqrt(1-a*a)+1)/a)));
                }else if(tokenActual.equals("acsch")){//Arcocosecante hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log((sgn(a)*Math.sqrt(a*a +1)+1)/a)));
                }else if(tokenActual.equals("acoth")){//Arcocotangente hiperbólica
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.log((a+1)/(a-1))/2));
                }else if(tokenActual.equals("sqrt")){//Raíz cuadrada
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Math.sqrt(a)));
                }else if(tokenActual.equals("round")){//Redondear
                    a=((Double)pilaEvaluar.pop()).doubleValue();
                    pilaEvaluar.push(new Double(Long.toString(Math.round(a))));
                }else{//si es otra cosa tiene que ser un número, simplemente se mete en la pila
                    pilaEvaluar.push(Double.valueOf(tokenActual));
                }
            }//while
        }catch(EmptyStackException e){ //Si en algún momento se acabó la pila hay un error
            throw new ArithmeticException("Expresión mal parseada");
        }catch(NumberFormatException e){ //Si hubo error al traducir un número hay un error
            throw new ArithmeticException("Expresión mal digitada");
        }catch(ArithmeticException e){ //Cualquier otro error de división por cero o logaritmo negativo, etc.
            throw new ArithmeticException("Valor no real en la expresión");
        }
       
        a=((Double)pilaEvaluar.pop()).doubleValue(); //El valor a devolver
       
        if(!pilaEvaluar.empty()) //Si todavía quedó otro valor en la pila hay un error
            throw new ArithmeticException("Expresión mal digitada");
           
        return a;
    }//funcion f
   
    /**
     *Esta función evalua la última expresión parseada en el valor x.
     *@param x valor a evaluar.
     *@return la evaluación del polinomio en el valor x.
     */
    public double f(double x) throws ArithmeticException{
        try{
            return f(ultimaParseada,x);
        }catch(ArithmeticException e){
            throw e;
        }
    }//Fin de la funcion f
   
   
   
    //FUNCIONES PRIVADAS
   
   
    /*
     *sacaOperador es una función que se encarga de sacar un operador de la pila
     *y manejarlo de manera apropiada, ya sea un operador unario o binario
     */
    private void sacaOperador(Stack Numeros, Stack operadores) throws EmptyStackException{
        String operador, a, b;
        final String operadoresBinarios="+ - * / ^ %"; //Lista de los operadores binarios
       
        try{
            operador=(String)operadores.pop(); //Saca el operador que se debe evaluar
           
            if(operadoresBinarios.indexOf(operador)!=-1){ //Si es un operador binario saca dos elementos de la pila y guarda la operación
                b=(String)Numeros.pop();
                a=(String)Numeros.pop();
                Numeros.push(new String(a+" "+b+" "+operador));
            }else{ //Sino sólo saca un elemento
                a=(String)Numeros.pop();
                Numeros.push(new String(a+" "+operador));
            }
        }catch(EmptyStackException e){
            throw e;
        }
    }//sacaOperador
   
    /*
     *sacaOperadores saca los operadores que tienen mayor prioridad y mete el nuevo operador
     */
    private void sacaOperadores(Stack PilaNumeros, Stack PilaOperadores, String operador){
        //Todas las funciones que se manejan como paréntesis de apertura
        final String parentesis="( ln log abs sen sin cos tan sec csc cot sgn asen asin acos atan asec acsc acot senh sinh cosh tanh sech csch coth sqrt round asenh asinh acosh atanh asech acsch acoth";
       
        //mientras la pila no esté vacía, el operador que sigue no sea un paréntesis de apertura, la longitud del operador sea uno (para que sea un operador), y la prioridad indique que tiene que seguir sacando elementos
        while(!PilaOperadores.empty() && parentesis.indexOf((String)PilaOperadores.peek())==-1 && ((String)PilaOperadores.peek()).length()==1 && prioridad(((String)PilaOperadores.peek()).charAt(0))>=prioridad(operador.charAt(0))){
            sacaOperador(PilaNumeros, PilaOperadores); //Saca el siguiente operador
        }
        PilaOperadores.push(operador);//Al final mete el nuevo operador luego de sacar todo lo que tenía que sacar.
    }
   
    /*
     *Función que devuelve la prioridad de una operacion
     */
    private int prioridad(char s) {
        if (s=='+' || s=='-') //Si es una suma o una resta devuelve cero
            return 0;
        else if (s=='*' || s=='/' || s=='%') //Si es multiplicación, división o resto de división devuelve uno
            return 1;
        else if (s=='^')//Si es potencia devuelve dos
            return 2;
           
        return -1; //Si no fue nada de lo anterior devuelve -1
    } //Fin de la funcion prioridad
 
    /*
     *Función que pregunta si un caracter es un número o no
     */
    private boolean isNum(String s) {
        if (s.compareTo("0")>=0 && s.compareTo("9")<=0) //Si el caracter está entre 0 y 9 (si es un número)
            return true;
        else
            return false;
    } //Fin de la funcion isNum
   
    /*
     *Quita los espacios del String con el polinomio
     */ 
    private String quitaEspacios(String polinomio){
        String unspacedString = ""; //Variable donde lee la función
 
        for(int i = 0; i < polinomio.length(); i++){    //Le quita los espacios a la espresión que leyó
            if(polinomio.charAt(i) != ' ') //Si el caracter no es un espacio lo pone, sino lo quita.
                unspacedString += polinomio.charAt(i);
        }//for
       
        return unspacedString;
    }//quitaEspacios
   
    /*
     *Devuelve el signo del número dado
     */
    private double sgn(double a){
        if(a<0) //Si el número es negativo devuelve -1
            return -1;
        else if(a>0)//Si es positivo devuelve 1
            return 1;
        else//Si no es negativo ni positivo devuelve cero
            return 0;
    }
   
 
    //CLASES PRIVADAS
 
 
    //Clase SintaxException
   
    //Esta es la excepción que se lanza si hay algún error sintáctico en la expresión
    private class SintaxException extends ArithmeticException{ //En realidad extiende la ArithmeticException
        public SintaxException(){ //Si se llama con el mensaje por defecto
            super("Error de sintaxis en el polinomio"); //El constructor llama a la clase superior
        }
       
        public SintaxException(String e){ //si se llama con otro mensaje
            super(e); //El constructor llama a la clase superior
        }
    }
}//fin de Parseador


Me gustaría que me ayudaran a pasarlo para que sea ejecutable en un celular o móvil, ¿qué debo de cambiar? o ¿qué debo realizar?

De antemano les estoy agradecido.

Saludos.

5
Java / Listas Enlazadas.
« en: Miércoles 11 de Noviembre de 2009, 05:57 »
Hola.

Tengo que realizar un código que haga ciertas operaciones de una Matriz Dispersa con Listas Enlazadas.

No les pido que me lo resuelvan, sólo que me echen la mano, ya que estoy completamente perdido en el tema de Listas Enlazadas, no sé ni cómo comenzar.

La declaración es algo así:

Código: Java
  1. class MatrizDispersa{
  2. //Constructor de la matriz: recibe el numero de filas y columnas.
  3. MatrizDispersa(int numFilas, int numColumnas);
  4. // Asigna un valor a una posicion concreta de la matriz
  5. // Si la posicion no es correcta, devuelve false y no se produce asignacion
  6. bool Asignar(int fila, int columna, TpElemento elem);
  7. // Devuelve el contenido de una determinada posicion (fila, columna) de la matriz.
  8. // Si la posicion no es correcta(excede las dimensiones), Ok se pone false.
  9. TpElemento Consultar(int fila, int columna, boolean &Ok);
  10. // Devuelve el numero de filas de la matriz
  11. Public int Filas()
  12. // Devuelve el numero de columnas de la matriz.
  13. Public int Columnas()
  14. // Elimina todos los nodos de la matriz actual y la redimensiona
  15. // con un nuevo numero de filas y columnas
  16. Public void Redimensionar(const unsigned int numFilas, const unsigned int numColumnas);
  17. //Realiza la suma de las matrices A y B y la almacena en la matriz actual.
  18. // Si las dimensiones de A y B no coinciden, devuelve false y no se hace la operacion.
  19. Public boolean Sumar(MatrizDispersa A, MatrizDispersa B)
  20. // Guarda en un fichero de texto el contenido de la matriz.
  21. // El nombre de fichero se pasa como parametro
  22. Public void GuardarEnFichero(char *nombre)
  23. // Lee la matriz de fichero
  24. // Si el fichero no existe, o los datos no son correctos, devuelve false.
  25. Public boolean LeerDeFichero(const char *nombre);
  26. }; // Fin de MatrizDispersa
  27.  

Cualquier tipo de ayuda es bien recibida.

De antemano quiero agradecerles el haberse tomado la molestia de leer mi post.

Un saludo.

6
PHP / Re: Select que recorra varias filas.
« en: Jueves 30 de Julio de 2009, 16:27 »
Es que ya tengo esos datos dentro de 1 tabla, y en realidad no estoy usando nombres para continentes y paises, estoy usando 'ids' y pues para la ciudad estoy usando el nombre, podrías ayudarme con la/las consulta/s, y con un ejemplo, es que no me queda muy claro lo que me quieres decir del array.

De nuevo, gracias por tu ayuda.

7
PHP / Re: Select que recorra varias filas.
« en: Jueves 30 de Julio de 2009, 16:02 »
Muchas gracias Edo, en PHPMYADMIN funciona perfecto, pero quiero ejecutar eso en mi página php, el problema más bien radicaría en incluir eso en el ciclo, o en su defecto quitar el ciclo y hacer las consultas con 'do while', pero también estoy confundido en sobre como hacer las consultas, estaba pensando en algo así, míralo y dime que piensas:

Código: PHP
  1.  $query_Recordsetcont= "CONSULTA CONTINENTE";
  2.   $Recordsetcont = mysql_query($query_Recordsetcont, $conex) or die(mysql_error());
  3. $row_Recordsetcont = mysql_fetch_assoc($Recordsetcont);
  4. do{
  5. $id_continente=$row_Recordsetcont['id_continente'];
  6. $continente=$row_Recordsetcont['continente'];
  7.  
  8.  
  9.   $query_Recordsetpais= "CONSULTA PAIS ";
  10.   $Recordsetpais = mysql_query($query_Recordsetpais, $conex) or die(mysql_error());
  11. $row_Recordsetpais = mysql_fetch_assoc($Recordsetpais);
  12. do{
  13. $id_pais=$row_Recordsetpais['id_pais'];
  14. $pais=$row_Recordsetpais['pais'];
  15.  
  16.   $query_Recordset= "CONSULTA CIUDAD";
  17.   $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  18. $row_Recordset = mysql_fetch_assoc($Recordset);
  19. do{
  20. $ciudad=$row_Recordset['ciudad'];
  21.  
  22. ////Aquí se imprimen///
  23.  
  24. }while($row_Recordset= mysql_fetch_assoc($Recordset));
  25. }while($row_Recordsetpais= mysql_fetch_assoc($Recordsetpais));
  26. }while($row_Recordsetcont= mysql_fetch_assoc($Recordsetcont));
  27.  

Además, quisiera que la consulta fuera con todos, osea los continentes, paises y ciudades dentro de la misma tabla, no importa si usas un 'id' para identificarlos o ya sea el nombre, es lo de menos en realidad, lo que me importa es la consulta y que se impriman, en realidad lo que yo tengo planeado con esto, es que se impriman de acuerdo al número de ciudades, si en total son 10 ciudades, pues que todo se imprima 10 veces, ¿me explico?

Saludos.

8
PHP / Select que recorra varias filas.
« en: Jueves 30 de Julio de 2009, 00:43 »
Hola.

Tengo un ciclo 'for' en mi página que toma valores de mi BD e imprime categorías y subcategorías, lo más seguro es que no me explique, así que pondé un ejemplo de mi BD y un ejemplo de como quiero que aparezca en la página.

Así está más o menos mi BD:

[php:2bvfd1db]
  1.  
  2. Tabla: tabla1
  3.  
  4. Continentes   Países                        Ciudades                  (campos)
  5.  
  6. América          México                        D.F.                           (valores)
  7. América          Estados Unidos          Washington
  8. Europa           España                       Madrid
  9. Europa           Inglaterra                   Liverpool
  10. África             Egipto                         El Cairo
  11. Asia               Japón                          Hong Kong.
  12. Asia               China                          Beijing
  13. Oceanía         Australia                     Sydney.
  14. Europa          Francia                        Paris
  15.  
  16.  
[/php:2bvfd1db]

Y en la página como les repito, es un ciclo for, me gustaría hacer un 'SELECT' de alguna manera para que en la página ya apareciera algo así:

América -> México -> D.F.
Europa ->  Inglaterra -> Liverpool
etc.

Así como en la base de datos, pero por orden, yo intenté pero sólo me toma un valor no todos, sino me explico díganme y seré más detallado.

Digamos que primero se hace una consulta para ver el total de lineas que se van a tomar en cuenta con ésto:

[php:2bvfd1db]
  1.  
  2. $query = "select llave FROM tabla1 WHERE llave = '".$llave."'";
  3. $result = mysql_query($query);
  4. $activ_rows = mysql_num_rows($result);
  5.  
[/php:2bvfd1db]

Y luego el ciclo 'for':
[php:2bvfd1db]
  1.  
  2. for($filas=0;$filas+1<=$activ_rows;$filas++)
  3. {
  4. Aquí iria lo de "América -> México -> D.F.", etc.
  5. }
  6.  
[/php:2bvfd1db]

Me faltó agregar al ejemplo de mi BD que lleva una llave, para separar, aunque en el ejemplo que les mostré arriba todos llevan la misma llave, así que no importa.

Espero puedan ayudarme, se los agradezco de antemano.

Saludos.

9
PHP / Relacionar dos tablas.
« en: Viernes 24 de Julio de 2009, 23:35 »
Hola.

Tengo un problema, quiero relacionar 2 tablas y mostrarlas en una lista desplegable, pero llegué a un punto en el que no logro encontrar la respuesta, primero que nada les pongo un ejemplo de las tablas:

[php:2vurgxcc]
  1.  
  2. Tabla: tabla1
  3.  
  4. id     descrip                    (campos)
  5.  
  6. 25    descrip25                (valores)
  7. 20    descrip20
  8. 15    descrip15
  9.  
[/php:2vurgxcc]

[php:2vurgxcc]
  1.  
  2. Tabla: tabla2
  3.  
  4. id     llave                    (campos)
  5.  
  6. 25    8596                   (valores)
  7. 20    8596
  8. 15    0002
  9.  
[/php:2vurgxcc]

Bueno supongamos que aquí la llave que yo tengo es '8596', entonces me debe tomar los valores 25, y 20; y móstrarlos en la lista desplegable con éste código:

[php:2vurgxcc]
  1.  
  2. <?php
  3.   $query_Recordset = "SELECT llave,id FROM tabla2 WHERE llave = '".$llave."'";
  4. $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  5. $row_Recordset = mysql_fetch_assoc($Recordset);
  6.  
  7. do{
  8.  ?>
  9. <option value="<?php echo $row_Recordset['llav']; ?>"><?php echo $row_Recordset['id'];?> </option>
  10. <?php }while($row_Recordset= mysql_fetch_assoc($Recordset)); ?>
  11.  
[/php:2vurgxcc]

Hasta ahí todo bien porque sólo estoy mostrando el id, pero cuando lo quiero relacionar con 'tabla1' para que me muestre las descripciones, hice algo así:

[php:2vurgxcc]
  1.  
  2. <?php
  3.   $query_Recordset = "SELECT tabla1.id,tabla2.id AS Id,tabla1.descrip FROM tabla1,tabla2 WHERE tabla2.llave= '".$llave."' AND tabla2.id=tabla1.id ";
  4. $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  5. $totalRows_Recordset = mysql_num_rows($Recordset);
  6.  
  7.  
  8. while($row_Recordset= mysql_fetch_assoc($Recordset)); {
  9.  ?>
  10. <option value="<?php echo $row_Recordset['id']; ?>"><?php echo $row_Recordset['descrip'];?> </option>
  11. <?php } ?>
  12.  
  13. </select>
  14.  
[/php:2vurgxcc]

Ahí en vez de mostrarme 'descrip25' y 'descrip20', no me muestra nada, ¿cómo podría editar el código para que me mostrara ambos, osea los que coincidan con el 'id' de la 'tabla1'?

Espero puedan ayudarme, gracias de antemano.

Saludos.

EDIT: Resuelto, era problema de mi BD.

10
JavaScript / Mandar variables entre páginas.
« en: Jueves 23 de Julio de 2009, 02:30 »
Hola.

Me gustaría que alguien pudiera decirme como mandar variables entre páginas en javascript, y por ende también como recibirlas en la otra página.

También tenía otra dudilla, esa variable de javascript ¿cómo podría pasarla a php para trabajar con ella ¿hay alguna manera de hacer esto?

De antemano, muchas gracias.

11
JavaScript / Re: Contador de cantidades.
« en: Lunes 20 de Julio de 2009, 20:27 »
Tengo esta función, pero no me resta los valores, simplemente se pone el valor de monto, donde se deberia de poner la cantidad ya restada, osea la textbox 'total', ¿alguna idea?

Código: Text
  1.  
  2. function restar() {
  3. var cajas = new Array();
  4. var monto = 150;
  5.     for (var i=0; i<cajas.length; i++) {
  6.         cajas[i] = document.getElementById('valor'+i).value;
  7.         monto -= cajas[i];
  8.        
  9.     }
  10.         document.getElementById('total').value = monto;
  11. }  
  12.  
  13.  

Saludos.

12
JavaScript / Contador de cantidades.
« en: Viernes 17 de Julio de 2009, 17:15 »
Hola.

Tengo éste código en un ciclo for que se recorre cierta cantidad de veces:

[php:1dfkv52u]
  1.  
  2. <input name="nombre[<?php echo $z;?>]" type="text" value="0.00" onkeyup="total.value = <?php echo $monto;?> - this.value."/>
  3.  
[/php:1dfkv52u]

Lo que estoy tratando de hacer es que en la variable '$monto' tengo una cantidad, entonces por cada vez que se recorra el ciclo for, digamos tres veces, en la caja de texto que puse arriba se van a poner cantidades, digamos que '$monto= 15000;' y en las tres cajas de texto que se van a crear pongo los valores 10000, 1000 y 1500.

Yo tengo otra caja:

[php:1dfkv52u]
  1. <input type="text" name="total" id="total" value="" disabled>
[/php:1dfkv52u]

Se supone, o lo que yo tenía planeado es que tomando en cuenta lo que puse antes, debería aparecer '2500' en la caja 'total', ya que restando 10000, 1000 y 1500 a 15000 da '2500', pero no pasa nada. ¿Alguna idea de que podría estar haciendo mal?

Gracias de antemano.

Saludos.

13
PHP / Redireccionar con frames.
« en: Miércoles 8 de Julio de 2009, 16:38 »
Hola.

Tengo una página en la cual estoy haciendo un proceso de insertar valores en una BD, ésta página está completamente en blanco, como dije sólo la cree para insertar los valores de páginas anteriores, pero el problema es que tiene 2 frames de cabecera y menú, lo que yo quiero es que al momento de insertar los valores, se redireccione a la primera página, pero que también se carguen los 2 frames antes mencionados.

¿Cómo podría hacer esto?

Gracias de antemano por su ayuda, un saludo.

Problema resuelto, gracias.

14
PHP / Re: file upload
« en: Lunes 6 de Julio de 2009, 18:38 »
Si sólo quieres subir el archivo, yo uso éste código.

 echo '<form action="#" method="post" enctype="multipart/form-data">
          Elija el archivo que desea importar:<br>
          <input type="file" name="filename" size="20"><br>
          <input type="submit" name="submit" value="Cargar">
          </form>';

Saludos.

15
PHP / Re: file upload
« en: Lunes 6 de Julio de 2009, 17:06 »
Pega el código que usas para subir archivos.

Saludos.

16
PHP / Calendario con tablas.
« en: Lunes 6 de Julio de 2009, 15:46 »
Hola.

Trataré de ser lo más explícito posible con el problema que tengo, quiero hacer un calendario con tablas.

Digamos que éste es el código:

[php:3ui0gt9l]
  1.  
  2. <table align="center">
  3. <tr><td id="tagline"> <p> </p>
  4.   <p>PROGRAMACIÓN DE COSTOS </p></td></tr>
  5. <tr><td> </td></tr>
  6. </table>
  7. <table width="924" height="242" border="1" bordercolor="#FF9933">
  8.   <tr>
  9.     <th colspan="13" scope="row" class="bodyText"><div align="left">Titulo1</div></th>
  10.   </tr>
  11.   <tr>
  12.     <th colspan="13" scope="row" class="bodyText"><div align="left">Ruta </div></th>
  13.   </tr>
  14.  
  15.   <tr>
  16.     <th colspan="13" scope="row" class="bodyText"><div align="left">Actividad: <input type="text" name="actividad" id="actividad" size="50"/></div></th>
  17.   </tr>
  18.   <tr>
  19.     <th colspan="13" scope="row"> </th>
  20.   </tr>
  21.     <th width="77"  rowspan="2" scope="row"> </th>
  22.    
  23.     <td colspan="12" class="bodyText"><div align="center">2009</div></td>
  24.   </tr>
  25.   <tr class="bodyText">
  26.     <td width="77" class="bodyText">ENE</td>
  27.     <td width="77" class="bodyText">FEB</td>
  28.     <td width="77" class="bodyText">MAR</td>
  29.     <td width="77" class="bodyText">ABR</td>
  30.     <td width="77" class="bodyText">MAY</td>
  31.     <td width="77" class="bodyText">JUN</td>
  32.     <td width="77" class="bodyText">JUL</td>
  33.     <td width="77" class="bodyText">AGO</td>
  34.     <td width="77" class="bodyText">SEP</td>
  35.     <td width="77" class="bodyText">OCT</td>
  36.      <td width="77" class="bodyText">NOV</td>
  37.      <td width="77" class="bodyText">DIC</td>
  38.   </tr>
  39.   <tr>
  40.     <th scope="row" class="bodyText">CAL1</th>
  41.     <td><input name="nombre" type="text" value="12500.00" size="15"/></td>
  42.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  43.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  44.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  45.     <td> <input name="nombre" type="text" value="12500.00" size="15" /></td>
  46.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  47.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  48.     <td> <input name="nombre" type="text" value="12500.00" size="15"/></td>
  49.     <td> <input name="nombre" type="text" value="12500.00" size="15" /></td>
  50.     <td> <input name="nombre" type="text" value="12500.00" size="15" /></td>
  51.     <td> <input name="nombre" type="text" value="12500.00" size="15" /></td>
  52.     <td> <input name="nombre" type="text" value="12500.00" size="15" /></td>
  53.   </tr>
  54.   <tr>
  55.     <th scope="row" class="bodyText">CAL2</th>
  56.     <td><input name="nombre" type="text" value="13500.00" size="15"/></td>
  57.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  58.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  59.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  60.     <td> <input name="nombre" type="text" value="13500.00" size="15" /></td>
  61.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  62.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  63.     <td> <input name="nombre" type="text" value="13500.00" size="15"/></td>
  64.     <td> <input name="nombre" type="text" value="13500.00" size="15" /></td>
  65.     <td> <input name="nombre" type="text" value="13500.00" size="15" /></td>
  66.     <td> <input name="nombre" type="text" value="13500.00" size="15" /></td>
  67.     <td> <input name="nombre" type="text" value="13500.00" size="15" /></td>
  68.   </tr>
  69. </table>
  70.  
[/php:3ui0gt9l]

Ahí sólo aparece de ENERO a DICIEMBRE del 2009, lo que yo busco es que dependiendo de una variable que contiene una fecha de inicio y otra que tiene una fecha de término, que recibo desde otra página, digamos que las variables están así:

[php:3ui0gt9l]
  1.  
  2. $fechainicio= "15-Feb-09";
  3. $fechatermino= "24-Ene-10";
  4.  
[/php:3ui0gt9l]

Que me aparezca el calendario en tablas como el que puse arriba, pero en vez que sea de Enero a Diciembre del 2009, aparezca de Febrero del 2009 a Enero del 2010, dependiendo obviamente del valor de las variables.

¿Hay alguna forma de realizar esto?

Les agradezco de antemano su ayuda.

Saludos.

17
PHP / Re: php no manda errores
« en: Sábado 4 de Julio de 2009, 02:42 »
Ve al PHP.ini y revisa que la opción este así "error_reporting = E_ALL "

Saludos.

18
PHP / Re: Problema al insertar valores en una BD.
« en: Viernes 3 de Julio de 2009, 02:00 »
Ya lo resolví, lo que pasa es que lo puse mal aqui y me faltaba una comilla (') en un array, muchas gracias por tu ayuda y atención.

Saludos.

19
PHP / Re: Problema al insertar valores en una BD.
« en: Jueves 2 de Julio de 2009, 19:05 »
No es la comilla, lo que pasa es que lo pegué mal aquí, pero el código original si tiene la comilla.

¿Cuáles espacios?

Saludos.

20
PHP / Re: Problema al insertar valores en una BD.
« en: Jueves 2 de Julio de 2009, 17:57 »
Bueno, lo de la variable ya quedó resuelto, ahora el problema sería la sintaxis de MySQL, ¿alguien que pueda ayudarme con eso?

Saludos.

21
PHP / Re: Problema al insertar valores en una BD.
« en: Jueves 2 de Julio de 2009, 15:47 »
Ya le moví al código y creo que lo tengo casi completo :

[php:32y5pct6]
  1.  
  2. <?php
  3. require_once('Connections/conex.php');
  4. mysql_select_db($database_conex, $conex);
  5. if(isset($_POST['submit']))
  6. {
  7.  if (move_uploaded_file($_FILES['filename']['tmp_name'], "archivo.csv"))
  8.  {
  9.   echo "File sucessfully uploaded."."<BR>";
  10.   $filename = "archivo.csv";
  11.   $handle = fopen($filename, 'r');
  12.   }
  13.  else
  14.  {
  15.   echo "Error : " . $uploaddir . basename($_FILES['filename']['name'])  . 'n' . $_FILES['filename']['error'] . "<BR>";
  16.   }
  17.  $data2='S';
  18.  $sw=0;
  19.  while (($data = fgetcsv($handle, 4096, ',')) !== FALSE)
  20.  {
  21.   $data = str_replace("'","''",$data);
  22.   $prueba = $data[0]; /// M
  23.   if(!empty($sw))
  24.   {
  25.    if($prueba!=$data2)
  26.    {
  27.     $sintaxis=$prueba."%";
  28.     $query_Recordset = "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa DESC limit 0,1";
  29.     $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  30.     $row_Recordset = mysql_fetch_assoc($Recordset);
  31.     $clave_completa = $row_Recordset['clave_completa'];
  32.     $clave=explode($prueba,$clave_completa);
  33.     $clave[1]++;
  34.     $clave= $prueba.$clave[1];
  35.     $import="INSERT INTO tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
  36.     $import2="UPDATE tabla2 SET clave_completa = '$clave' WHERE clave_completa= '$clave_completa";
  37.     $runq = mysql_query($import) or die(mysql_error());
  38.     $runq2 = mysql_query($import2) or die(mysql_error());
  39.     }
  40.    }
  41.   $sw=1;
  42.   }
  43.  fclose($handle);
  44.  print "Import done";
  45.  }
  46. else
  47. {
  48.  echo '<form action="#" method="post" enctype="multipart/form-data">
  49.          Select file to import:<br>
  50.          <input type="file" name="filename" size="20"><br>
  51.          <input type="submit" name="submit" value="submit">
  52.          </form>';
  53.  }
  54. //$import="select * from main_table";
  55. //$runq = mysql_query($import) or die(mysql_error());
  56. //$import2="select * from table2";
  57. //$runq2 = mysql_query($import2) or die(mysql_error());
  58. //DbClose();
  59. ?>
  60.  
[/php:32y5pct6]

Y me marca sólamente estos errores:

[php:32y5pct6]
  1.  
  2. Notice: Undefined offset: 1 in site on line 42
  3.  
  4. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1  
  5.  
[/php:32y5pct6]

Ésta es la línea 42:

[php:32y5pct6]
  1.  
  2.  $clave[1]++;  
  3.  
[/php:32y5pct6]

¿Alguna idea para resolver esto?

Saludos.

22
PHP / Re: Problema al insertar valores en una BD.
« en: Miércoles 1 de Julio de 2009, 00:22 »
Poniendo el valor del row_Recordset con éste código:

Código: PHP
  1.      
  2. echo '<pre>';
  3.       var_dump($row_Recordset);
  4.       echo '</pre>';
  5.  
  6.  

En la primera vuelta me muestra esto:

Código: PHP
  1.  
  2. bool(false)
  3.  
  4.  

¿Alguna idea del por qué?

Saludos.

23
PHP / Re: Problema al insertar valores en una BD.
« en: Martes 30 de Junio de 2009, 17:51 »
Le he movido algo y digamos que tengo ésto:

Código: PHP
  1.  
  2. <?php
  3. require_once('Connections/conex.php');
  4. mysql_select_db($database_conex, $conex);
  5. //DbOpen();
  6. echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
  7. if(isset($_POST['submit'])) {
  8.  
  9. if (move_uploaded_file($_FILES['filename']['tmp_name'], "archivo.csv")) {
  10. echo "File sucessfully uploaded."."<BR>";
  11. $filename = "archivo.csv";
  12. $handle = fopen($filename, 'r');
  13. } else {
  14. echo "Error : " . $uploaddir . basename($_FILES['filename']['name'])  . 'n' . $_FILES['filename']['error'] . "<BR>";
  15. }
  16.  
  17. $data2='S';
  18.  
  19. while (($data = fgetcsv($handle, 4096, ',')) !== FALSE) {
  20. $data = str_replace("'","''",$data);
  21.  
  22. $prueba=$data[0]; /// M
  23.  
  24. if($prueba!=$data2){
  25.  
  26. $sintaxis=$prueba."%";
  27.  
  28. $query_Recordset = "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa DESC limit 0,1";
  29. $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  30. $row_Recordset = mysql_fetch_assoc($Recordset);
  31. $totalRows_Recordset = mysql_num_rows($Recordset);
  32. $clave=$row_Recordset['llave'];
  33.  
  34.  
  35.  
  36. $clave++;
  37.  
  38. $data2=$prueba; // se asigna el valor anterior para poder comparar en el if
  39. }
  40.  
  41.  
  42. $import="INSERT into tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
  43. $import2="INSERT into tabla2(clave_completa) values('".$clave."')";
  44. $runq = mysql_query($import) or die(mysql_error());
  45. $runq2 = mysql_query($import2) or die(mysql_error());
  46. echo $import;
  47. echo "<br>";
  48. }
  49. fclose($handle);
  50. print "Import done";
  51.  
  52. }
  53. else {
  54. print "Type file name to import:<br>";
  55. print "<input type='file' name='filename' size='20'><br>";
  56. print "<input type='submit' name='submit' value='submit'>";
  57. }
  58. $import="select * from tabla_principal";
  59. $runq = mysql_query($import) or die(mysql_error());
  60. $import2="select * from tabla2";
  61. $runq2 = mysql_query($import2) or die(mysql_error());
  62.  
  63. //DbClose();
  64. ?>
  65.  
  66.  

Me gustaría que probaras el código para que vieras tú mismo el problema, te facilito el archivo .cvs adjúntandolo a éste post, de nuevo muchas gracias.

Saludos.

24
PHP / Re: Problema al insertar valores en una BD.
« en: Martes 30 de Junio de 2009, 15:58 »
Pues sigo teniendo problemas con el código, no me toma los valores correctamente, osea si yo quiero tomar el valor más grande, no lo hace así, y después cambia de valor, pego el código aquí espero alguien pueda ayudarme:

Código: PHP
  1.  
  2. <?php
  3. require_once('Connections/conex.php');
  4. mysql_select_db($database_conex, $conex);
  5. //DbOpen();
  6. echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
  7. if(isset($_POST['submit'])) {
  8.  
  9. if (move_uploaded_file($_FILES['filename']['tmp_name'], "archivo.csv")) {
  10. echo "File sucessfully uploaded."."<BR>";
  11. $filename = "archivo.csv";
  12. $handle = fopen($filename, 'r');
  13. } else {
  14. echo "Error : " . $uploaddir . basename($_FILES['filename']['name'])  . 'n' . $_FILES['filename']['error'] . "<BR>";
  15. }
  16. $data2=0;
  17. while (($data = fgetcsv($handle, 4096, ',')) !== FALSE) {
  18. $data = str_replace("'","''",$data);
  19.  
  20. if($data[0]!=$data2){
  21.  
  22. $sintaxis=$data[0]."%";
  23.  
  24.  
  25.   $query_Recordset = "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa ASC limit 0,1";
  26. $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  27. $row_Recordset = mysql_fetch_assoc($Recordset);
  28. $clave=$row_Recordset['llave'];
  29. $data2=$data[0];
  30. }
  31. $clave++;
  32. $import="INSERT into tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
  33. $runq = mysql_query($import) or die(mysql_error());
  34. echo $import;
  35. echo "<br>";
  36. }
  37.  
  38. fclose($handle);
  39. print "Import done";
  40.  
  41. }
  42. else {
  43. print "Type file name to import:<br>";
  44. print "<input type='file' name='filename' size='20'><br>";
  45. print "<input type='submit' name='submit' value='submit'>";
  46. }
  47. $import="select * from tabla_principal";
  48. $runq = mysql_query($import) or die(mysql_error());
  49.  
  50. //DbClose();
  51. ?>
  52.  
  53.  

Gracias de antemano.

Saludos.

25
PHP / Re: Problema al insertar valores en una BD.
« en: Martes 30 de Junio de 2009, 00:53 »
En realidad como dices sólo son Notice, ya que si me inserta los valores, sólo que alrevés...de abajo hacia arriba ¿alguna manera para corregir eso?
Y también, ¿cómo puedo desactivar los notice?

Saludos.

Páginas: [1] 2