jueves, 17 de octubre de 2013

Sobrenombrar Archivos e invertirlo en NetBeans

package sobrenombre;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JOptionPane;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
public class Texto {
 
    public void leer() throws IOException{
        File nombreArchivo=new File("Texto.txt");
        String texto="",datos="";
            try{
                 FileReader lee=new FileReader(nombreArchivo);
                 BufferedReader espacio=new BufferedReader(lee);
                    while(true){
                        texto=espacio.readLine();
                        datos+=texto+"\t";
                        if(texto==null){;break;}
                     
                    }
                 File nombreArchivo2=new File("Texto2.txt");
                 boolean sNombre=nombreArchivo2.createNewFile();
                   
                 espacio.close();
                 PrintWriter flujo = new PrintWriter(nombreArchivo2);
                 flujo.println(datos);
                 flujo.close();
                 lee.close();
                 System.out.println("Nombre texto original :"+nombreArchivo.getName()+"\t");
                 System.out.println("Nombre del nuevo Archivo:"+nombreArchivo2.getName()+"\r");
               
               
            }catch(IOException r){System.out.println(r.getMessage());}
    }
    public void invertir(){
        try{
            File nombreArchivo=new File("Texto.txt");
            BufferedReader espacio = new BufferedReader(new FileReader(nombreArchivo));
            String texto="",datos;
            while((datos = espacio.readLine()) != null)
            {
                texto += datos+"\n";
            }
             System.out.println("Este es el texto original :\r"+texto);
            String invertir="";
            for(int i=texto.length()-1;i>=0;i--)
            {
                invertir += texto.charAt(i);
            }
            System.out.println("Texto invertido: "+invertir);
               
            }catch(Exception g){System.out.println(g.getMessage());}
        }
       
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


package sobrenombre;

import java.io.FileNotFoundException;
import java.io.IOException;

public class SobreNombre {
    public static void main(String[] args)throws FileNotFoundException, IOException {
        Texto m=new Texto();
        m.leer();
        m.invertir();
    }
}

Conversion Posfija en netbeans

package prueba_infixpostfix;
import javax.swing.JOptionPane;
/** * * @author user Estefanny_G. */
public class Prueba_InfixPostfix {
    public static String LeerDato()
        {
        String sdato;
        sdato=JOptionPane.showInputDialog(null,"Ingrese la expresion :","(x+z)*w/t^y-v");
            return sdato;  
        }
    public static void main(String[] args) {
        Conversion e;
        String dato;
        dato=LeerDato();
        e=new Conversion(dato);
        e.infixToPostfix();
        JOptionPane.showMessageDialog(null,"Expresion infija = "+e.infix()+"\nExpresion posfija ="+e.postfix(),"Salida de datos",JOptionPane.DEFAULT_OPTION);
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package prueba_infixpostfix;
import javax.swing.JOptionPane;
public class Pila  {
    
    private Object []pila;
    private int tope;
    private int max;
    
    public Pila(){
        max=50;
        pila=new Object [max];
        tope=0;
        //this(101);
    }
    public Pila(int max){
        tope=0;//quitar
        this.max=max;
        pila=new Object[max+1];
    }
    public void meterPila(Object item){
        //PONER  tope++;
        try{
            pila[++tope]=item;
        }catch(ArrayIndexOutOfBoundsException s){tope--;s.getMessage();}
    }
    public void SacarPila(){
        if(PilaVacia())JOptionPane.showMessageDialog(null,"La pila esta llena");
        else{
            pila[tope]=null;
            tope--;
        }
    }
    public Object top(){
        if(PilaVacia()){
            JOptionPane.showMessageDialog(null,"La pila esta vacia");
            return null;
        }
            
        else
         return pila[tope];
         //return null;
    }
    public boolean PilaLlena()
    {
        if(tope+1==max)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public boolean PilaVacia(){return tope==0;}
    public int size(){
        return tope;
    }
    public void VaciarPila(){tope=0;}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package prueba_infixpostfix;
public class Conversion {
    
    private String infix,postfix;
    
    public Conversion(String infix) {
        this.infix = infix.trim().toLowerCase();
    }
    
    public void infixToPostfix(){
        char ch,topSymbol;
        Pila miPila=new Pila();
        postfix="";
        
        for(int infixIndex=0;infixIndex<infix.length();infixIndex++){
            ch=infix.charAt(infixIndex);//convierte la cadena de caracteres a caracter
            if(ch>='a'&&ch<='z'){//si el caracter en ciclo es igual a cualquier letra del abecedario
                postfix+=ch;//guarda el caracter en la cadena
            }
            if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='^'){//si el caracter es un operador
                if(miPila.size()>0){//Tope debe ser mayor a cero
                        while(precedence(((Character)miPila.top()).charValue(),ch)==true){//Mientras evaluar la jerarquia
                            if(((Character)miPila.top()).charValue()!='('){//Si encuentra un parentesis sacar los datos de la pila
                                postfix+=((Character)miPila.top()).charValue();//agrega caracteres de la pila a la cadena
                            }
                            miPila.SacarPila();//sacando datos d ela pila
                            if(miPila.PilaVacia()){break;};//si la pila ya se vacio romper ciclo
                        }
                }
                if(ch!=')'){//Si encuentra un parentesis derecho 
                    miPila.meterPila(new Character(ch));//meter dato a la pila
                }
                else{//Si no, si el caracter no sea ")"va a sacar los datos de la pila
                    char c;//caracter auxiliar
                    do{//hacer
                        c=((Character)miPila.top()).charValue();//evaluacion d ecaracteres en la pila
                        if(c!='(')//si el caracter auxiliar NO es (
                            postfix+=c;//agregar caracter a la cadena
                        miPila.SacarPila();//sacar dato d ela pila
                    }while(c!='(');//mientras el caracter auxiliar sea diferente de (
                }
            }
        }
        while(miPila.size()>0){//Si no existen parentesis en la expresion sacara los datos de la pila
            if(((Character)miPila.top()).charValue()!='(')
                postfix+=((Character)miPila.top()).charValue();
            miPila.SacarPila();
        }
    }
    public String postfix(){//Imprime expresion posfija
        return postfix;
    }
    public String infix(){//Imprime Expresion infija
        return infix;
    }
    private boolean precedence(char topsymbols,char charac){//  Evalua los operadores
        boolean resp=false;
        if((charac=='*'||charac=='/'||charac=='+'||charac=='-')&&(topsymbols=='^')){
            resp= true;
        }
        else{
            if((charac=='+'||charac=='-')&&(topsymbols=='*'||topsymbols=='/')){
                resp= true;
            }
            else{
                if((topsymbols=='^')&&(charac=='^')){
                    resp= true;
                }
                else{
                    if((topsymbols=='*'||topsymbols=='/')&&(charac=='*'||charac=='/')){
                        resp= true;
                    }
                    else{
                        if((topsymbols=='+'||topsymbols=='-')&&(charac=='+'||charac=='-')){
                            resp=true;
                        }
                    }
                }
            }
        }
        return resp;
    }
}