elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Temas
Páginas: [1]
1  Programación / Desarrollo Web / Ayuda con JS en: 29 Abril 2019, 01:46 am
Alguien me puede explicar este código, es de javascript

Código
  1. class Node{
  2.    constructor(val){
  3.        this.val = val;
  4.        this.next = null;
  5.    }
  6. }
  7.  
  8. class SinglyLinkedList{
  9.    constructor(){
  10.        this.head = null;
  11.        this.tail = null;
  12.        this.length = 0;
  13.    }
  14.    push(val){
  15.        var newNode = new Node(val);
  16.        if(!this.head){
  17.            this.head = newNode;
  18.            this.tail = this.head;
  19.        } else {
  20.            this.tail.next = newNode;
  21.            this.tail = newNode;
  22.        }
  23.        this.length++;
  24.        return this;
  25.    }
  26.    pop(){
  27.        if(!this.head) return undefined;
  28.        var current = this.head;
  29.        var newTail = current;
  30.        while(current.next){
  31.            newTail = current;
  32.            current = current.next;
  33.        }
  34.        this.tail = newTail;
  35.        this.tail.next = null;
  36.        this.length--;
  37.        if(this.length === 0){
  38.            this.head = null;
  39.            this.tail = null;
  40.        }
  41.        return current;
  42.    }
  43.    shift(){
  44.        if(!this.head) return undefined;
  45.        var currentHead = this.head;
  46.        this.head = currentHead.next;
  47.        this.length--;
  48.        if(this.length === 0){
  49.            this.tail = null;
  50.        }
  51.        return currentHead;
  52.    }
  53. }
  54.  
  55.  
  56. var list = new SinglyLinkedList()
  57. list.push("HELLO")
  58. list.push("GOODBYE")
  59. list.push("!")
  60.  
2  Programación / Java / Como invertir lista sencilla con el uso de nodos en: 21 Abril 2019, 18:39 pm
Hola amigos, tengo este codigo donde utilizo un nodo ubicado en la cabecera(cab) y otro al final(fin).
Quiero saber como puedo mostrar de forma inversa los datos ingresados.

CODIGO:

Código
  1. package metodos;
  2. import javax.swing.JOptionPane;
  3.  
  4. public class lista {
  5.    nodo cab;
  6.    nodo fin;
  7.  
  8.    lista(){
  9.        cab = fin = null;
  10.    }
  11.  
  12.    nodo getNodo(int cod){
  13.        nodo p;
  14.        if( cab == null )
  15.            //lista vacia
  16.            return null;
  17.        else{
  18.            //la lista tiene al menos un nodo
  19.            p=cab;
  20.            while(p!=null){
  21.                if(p.codP == cod)
  22.                    return p;
  23.                else
  24.                    p=p.sig;
  25.            }
  26.            return null;
  27.        }
  28.    }
  29.  
  30.    //creamos el metodo get final
  31.    nodo getNodoEnd(int cod){
  32.        nodo p;
  33.        if( fin == null )
  34.            //lista vacia
  35.            return null;
  36.        else{
  37.            //la lista tiene al menos un nodo
  38.            p=fin;
  39.            while(p!=null){
  40.                if(p.codP == cod)
  41.                    return p;
  42.                else
  43.                    p=p.ant;
  44.            }
  45.            return null;
  46.        }
  47.    }    
  48.  
  49.    boolean getVacia(){
  50.        return cab==null?true:false;
  51.    }
  52.  
  53.    int getLonglista(){
  54.        if(getVacia())
  55.            return 0;
  56.        else{
  57.            int con=0;
  58.            nodo p=cab;
  59.            while(p!=null){
  60.                con++;
  61.                p=p.sig;
  62.            }
  63.            return con;
  64.        }
  65.    }
  66.  
  67.    void setAddFinal(nodo info){
  68.        nodo p, q;
  69.        if( cab == null ){
  70.            cab = info;
  71.            JOptionPane.showMessageDialog(null,
  72.            "Primer elemento agregado!!, la lista tiene 1 elemento.");
  73.        }else{
  74.            q = getNodo(info.codP);
  75.            if(q!=null)
  76.                JOptionPane.showMessageDialog(null,
  77.                "El código del producto ya esta registrado en la lista!!!");
  78.            else{
  79.                p=cab;
  80.                while(p.sig!=null){
  81.                    p=p.sig;
  82.                }
  83.                p.sig = info;
  84.                int tam = getLonglista();
  85.                JOptionPane.showMessageDialog(null,
  86.                "Nuevo elemento agregado al final de la lista,"+
  87.                " existen: "+tam+" elementos.");
  88.            }
  89.        }
  90.    }
  91.  
  92.    void getMostrarT(){
  93.        if(getVacia())
  94.            JOptionPane.showMessageDialog(null, "Lista vacia!!");
  95.        else{
  96.            nodo p=cab;
  97.            String aux="";
  98.            int con=0;
  99.            while(p!=null){
  100.                aux = "La información en la posición "+con+" es:\n";
  101.                aux += "Código Producto: "+p.codP+"\n";
  102.                aux += "Nombre Producto: "+p.nomP+"\n";
  103.                aux += "Precio Unitario: "+p.precioU+"\n";
  104.                JOptionPane.showMessageDialog(null, aux);
  105.                con++;
  106.                p=p.sig;
  107.            }
  108.        }
  109.    }
  110.  
  111.    void setElimN( int cod ){
  112.        nodo p = getNodo(cod);
  113.        if( cab == null ){
  114.            JOptionPane.showMessageDialog(null,
  115.            "Lista vacía...");
  116.        }else{
  117.            if(p==null){
  118.                JOptionPane.showMessageDialog(null, "Elemento no existe!");
  119.            }else{
  120.                nodo q = null;
  121.                if((cab.sig==null)&&( p == cab )){
  122.                    cab = p = null;
  123.                    JOptionPane.showMessageDialog(null,
  124.                    "Elemento eliminado.  Lista vacia!!!");
  125.                }
  126.                else if((cab.sig != null)&&(p == cab)){
  127.                    cab = p.sig;
  128.                    p.sig = null;
  129.                    p = null;
  130.                    JOptionPane.showMessageDialog(null,
  131.                    "Elemento eliminado.  Eliminado en la cabecera!!!");
  132.                }
  133.                else if( (p.sig != null)&&(p!=cab) ){
  134.                    q = cab;
  135.                    while( q.sig != p )
  136.                        q = q.sig;
  137.                    q.sig = p.sig;
  138.                    p.sig = null;
  139.                    p = null;
  140.                    JOptionPane.showMessageDialog(null,
  141.                    "Elemento eliminado!!!");
  142.                }
  143.                else{
  144.                    q = cab;
  145.                    while( q.sig != p )
  146.                        q = q.sig;
  147.                    q.sig = null;
  148.                    p = null;
  149.                    JOptionPane.showMessageDialog(null,
  150.                    "Elemento eliminado de la ultima posicion!!!");
  151.                }
  152.            }
  153.        }
  154.    }
  155. }
  156.  

Clase nodo:
Código
  1. package metodos;
  2.  
  3. /**
  4.  *
  5.  * @author Ruben
  6.  */
  7. public class nodo {
  8.    int codP;
  9.    String nomP;
  10.    float precioU;
  11.    nodo sig;
  12.    nodo ant;
  13.  
  14.    public nodo(int codP, String nomP, float precioU) {
  15.        this.codP = codP;
  16.        this.nomP = nomP;
  17.        this.precioU = precioU;
  18.        this.sig = null;
  19.        this.ant=null;
  20.    }
  21.  
  22. }
  23.  


Probador:
Código
  1. package metodos;
  2. import javax.swing.JOptionPane;
  3.  
  4. public class probador {
  5.  
  6.    public static void main(String args[]){
  7.        int op, cod;
  8.        String nomp;
  9.        float precio;
  10.        lista productos = new lista();
  11.        nodo aux=null;
  12.        do{
  13.            op=Integer.parseInt(JOptionPane.showInputDialog(
  14.            "Menu Principal \n"+
  15.            "1. Agregar Producto \n"+
  16.            "2. Mostrar Productos \n"+
  17.            "3. Eliminar Producto \n"+
  18.            "4. Eliminar elemento de una posicion \n"+        
  19.            "5. Eliminar elemntos repetidos \n"+
  20.            "6. Invertir lista \n"+
  21.            "7. Rotar elementos \n"+        
  22.            "8. Salir \n"+
  23.            "Entre su opción: "        
  24.            ));
  25.  
  26.            switch(op){
  27.                case 1:
  28.                    cod = Integer.parseInt(JOptionPane.showInputDialog(
  29.                    "Entre código del producto: "));
  30.                    nomp = JOptionPane.showInputDialog("Entre nombre producto: ");
  31.                    precio = Float.parseFloat(JOptionPane.showInputDialog(
  32.                    "Entre precio unitario: "));
  33.                    aux = new nodo(cod,nomp,precio);
  34.                    productos.setAddFinal(aux);
  35.                break;
  36.                case 2:
  37.                    productos.getMostrarT();
  38.                break;
  39.                case 3:
  40.                    cod = Integer.parseInt(JOptionPane.showInputDialog(
  41.                    "Entre código del producto: "));
  42.                    productos.setElimN(cod);
  43.                break;
  44.                case 4:
  45.                    cod = Integer.parseInt(JOptionPane.showInputDialog(
  46.                    "Ingrese elemento a borrar: "));
  47.                    productos.setElimN(cod);
  48.                break;
  49.                case 5:
  50.  
  51.                break;
  52.                case 6:
  53.                break;
  54.                case 7:
  55.  
  56.                break;
  57.                case 8:
  58.                    JOptionPane.showMessageDialog(null, "Adios!");
  59.                break;    
  60.                default:
  61.                    JOptionPane.showMessageDialog(null, "Opcion invalida!");
  62.            }
  63.  
  64.        }while(op!=8);
  65.        System.exit(0);
  66.    }
  67.  
  68. }
  69.  
3  Programación / Java / Ejemplo de Matriz en: 25 Febrero 2019, 04:52 am
Les comparto este pequeño programa con la ayuda de Tektor.

Ejercicio:
Se requiere una matriz que realice las siguientes operaciones
-Ingresar TC(meses[1-12] ) y TF(vendedor)
-Obtener la información de ventas de cada mes y vendedor
-Obtener el mejor y el peor vendedor
-Obtener el mejor y el peor mes de ventas
-Dado un mes(COLUMNAS), obtener el mejor y el peor vendedor
-Dado un vendedor(FILAS), obtener el mejor y el peor mes de ventas
                             Incluir menú
Código:
//código del menú
package metodos;


import javax.swing.JOptionPane;
import static metodos.miMatriz.mes;
import static metodos.miMatriz.vendedor;
public class menu1{
   
    public static void main(String args[]){
        int opcion;
        String op;
       
do{
    op= JOptionPane.showInputDialog("Menu De opciones: \n"
            + "1) Ingresar TC(meses[1-12] ) y TF(vendedor)\n"
            + "2) Obtener la informacion de ventas de cada mes y vendedor\n"
            + "3) Obtener el mejor y el peor vendedor \n"
            + "4) Obtener el mejor y el peor mes de ventas\n  "
            + "5) Dado un mes(TC), obtener el mejor y el peor vendedor\n"
            + "6) Dado un vendedor(TF), obtener el mejor y el peor mes de ventas\n"
            + "7) EJECUTAR TODAS LAS OPCIONES(RECOMENDADA)\n "
            + "8) Salir\n");
     try{
         opcion = Integer.parseInt(op);
         
         
     }catch(NumberFormatException ex){
         JOptionPane.showMessageDialog(null, "Error, solo se permiten numeros");
         opcion=0;
     }
     switch(opcion){
         case 0:
             break;
             
         case 1:
            miMatriz.llenarM();
            miMatriz.mostrarM();
             break;
             
         case 2:
            miMatriz.vectorMes();
            miMatriz.vectorVendedor();
            miMatriz.mostrarVec("La información de ventas de cada mes es: ", mes);
            miMatriz.mostrarVec("La información de ventas de cada vendor es: ", vendedor);
             break;
             
         case 3:
            miMatriz.MejorVendedor();
            miMatriz.PeorVendedor();
             break;
             
         case 4:
            miMatriz.MejorVendedor();
            miMatriz.PeorVendedor();
             break;
         case 5:
            miMatriz.pedircolumna();
             break;
             
         case 6:
             miMatriz.pedirfila();
             break;
         case 7:
            miMatriz.llenarM();
            miMatriz.mostrarM();
            miMatriz.vectorMes();
            miMatriz.mostrarVec("La información de ventas de cada mes es: ", mes);
            miMatriz.vectorVendedor();
            miMatriz.mostrarVec("La información de ventas de cada vendor es: ", vendedor);
            miMatriz.MejorVendedor();
            miMatriz.PeorVendedor();
            miMatriz.MejorMes();
            miMatriz.PeorMes();
            miMatriz.pedircolumna();
            miMatriz.pedirfila();
             break;
         
             
         default: JOptionPane.showMessageDialog(null, "Saliendo...");
     }
        }while(opcion !=8);   
    }
   
}




//-------------------------------------------------------------------------------------------------
//Código del programa

package metodos;
import javax.swing.JOptionPane;
 
public class miMatriz {
    public static int ventas[][];
    public static int mes[];
    public static int vendedor[];
    public static int tf, tc;
   

    public static void llenarM(){
        int i, j;
        tc = Integer.parseInt( JOptionPane.showInputDialog(
        "Entre número de meses [1 - 12]:") );
        tf = Integer.parseInt( JOptionPane.showInputDialog(
        "Entre número de vendedores: ") );
        ventas = new int[tf][tc];
        mes = new int[tc];
        vendedor = new int[tf];       
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                ventas[i][j] = Integer.parseInt(JOptionPane.showInputDialog(
                "Entre ventas del vendedor en ["+i+"]["+j+"]:"));
            }
        } 
    }
   
    public static void mostrarM( ){
        int i, j;
        String aux="Los elementos de la matriz de ventas son: \n";
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                aux += "[ "+ventas[i][j]+" ]";
            }
            aux+="\n";
        }
        JOptionPane.showMessageDialog(null, aux);
    }
   
    public static void vectorMes(){
        int i, j;
        for(j=0;j<tc;j++){
            for(i=0; i<tf; i++){
                mes[j] += ventas[i][j];
            }
        }
    }
     
    public static void vectorVendedor(){
        int i, j;
        for(i=0; i<tf; i++){
            for(j=0; j<tc; j++){
                vendedor[i] += ventas[i][j];
            }
        }
    }

        public static void mostrarVec( String x, int vec[] ){
        int i;
        String aux="< ";
        for(i=0; i<vec.length; i++){
            if( i < (vec.length-1) )
                aux += ""+vec[i]+","
                        + " ";
            else
                aux += ""+vec[i]+" >";
        }
        JOptionPane.showMessageDialog(null, ""+x+"\n"+aux);
    }
   
    public static void MejorVendedor( ){
        int pos=0, i;
        int may=vendedor[0];
        for(i=0; i<vendedor.length; i++){
            if(vendedor[i]>may){
                may=vendedor[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El mejor vendedor es: "+pos);
    }
   
    public static void PeorVendedor( ){
        int pos1=0, i;
        int men=vendedor[0];
        for(i=0; i<vendedor.length; i++){
            if(vendedor[i]<men){
                men=vendedor[i];
                pos1=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El peor vendedor es: "+pos1);
    }
   
    public static void MejorMes( ){
        int pos=0, i;
        int may=mes[0];
        for(i=0; i<mes.length; i++){
            if(mes[i]>may){
                may=mes[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El mejor mes de ventas es: "+pos);
    }
   
    public static void PeorMes( ){
        int pos=0, i;
        int men=mes[0];
        for(i=0; i<mes.length; i++){
            if(mes[i]<men){
                men=mes[i];
                pos=i;
            }
        }
        JOptionPane.showMessageDialog(null, "El peor mes de ventas es: "+pos);
    }
 
public static void pedircolumna(){
    int c=0, tc1, o;
   
    tc1= Integer.parseInt( JOptionPane.showInputDialog(
     "Ingrese el número de columna en la que desea buscar:") );
    if(tc1>=ventas[0].length){
        JOptionPane.showInputDialog("Opcion no valida");
    }
    o = Integer.parseInt( JOptionPane.showInputDialog(
    "OPCIONES: \n"
            + "1) Hallar el mejor mes de ventas \n"
            + "2) Hallar el peor mes de ventas \n") );
    if (o==1){
        JOptionPane.showMessageDialog(null, "El mayor dato en la columna "+tc1+" es:" +Obtenermayor(tc1, ventas)); 
    }
    else {
        if(o==2){
       JOptionPane.showMessageDialog(null, "El menor dato en la columna "+tc1+" es:" +Obtenermenor(tc1, ventas));       
        }
        else{
            JOptionPane.showMessageDialog(null, "Opcion no valida");
        }
    }
   
}
       public static int Obtenermayor(int mes, int ventas[][]){
           int mayor= ventas[0][mes];
           for(int i=1; i<ventas.length; i++){
               if(ventas[i][mes]>mayor){
                   mayor = ventas[i][mes];
               }
           }
        return mayor;   
       }
        public static int Obtenermenor(int mes, int ventas[][]){
           int menor= ventas[0][mes];
           for(int i=1; i<ventas.length; i++){
               if(ventas[i][mes]<menor){
                   menor = ventas[i][mes];
               }
           }
        return menor;   
       }
       
public static void pedirfila(){
    int c=0, tc1, o;
   
    tc1= Integer.parseInt( JOptionPane.showInputDialog(
     "Ingrese el número de fila en la que desea buscar:") );
    if(tc1>=ventas[0].length){
        JOptionPane.showInputDialog("Opcion no valida");
    }
    o = Integer.parseInt( JOptionPane.showInputDialog(
    "OPCIONES: \n"
            + "1) Hallar el mejor vendedor \n"
            + "2) Hallar el peor vendedor \n") );
    if (o==1){
        JOptionPane.showMessageDialog(null, "El mayor dato en la fila "+tc1+" es:" +Obtenermayorf(tc1, ventas)); 
    }
    else {
        if(o==2){
       JOptionPane.showMessageDialog(null, "El menor dato en la fila "+tc1+" es:" +Obtenermenorf(tc1, ventas));       
        }
        else{
            JOptionPane.showMessageDialog(null, "Opcion no valida");
        }
    }
   
}
       public static int Obtenermayorf(int vendedor, int ventas[][]){
           int mayor= ventas[vendedor][0];
           for(int i=1; i<ventas.length; i++){
               if(ventas[vendedor][i]>mayor){
                   mayor = ventas[vendedor][i];
               }
           }
        return mayor;   
       }
       
        public static int Obtenermenorf(int vendedor, int ventas[][]){
           int menor= ventas[vendedor][0];
           for(int i=1; i<ventas.length; i++){
               if(ventas[vendedor][i]<menor){
                   menor = ventas[vendedor][i];
               }
           }
        return menor;   
       }
   
    public static void main(String args[]){
       
        llenarM();
        mostrarM();
        vectorMes();
        mostrarVec("La información de ventas de cada mes es: ", mes);
        vectorVendedor();
        mostrarVec("La información de ventas de cada vendor es: ", vendedor);
        MejorVendedor();
        PeorVendedor();
        MejorMes();
        PeorMes();
        pedircolumna();
        pedirfila();
        System.exit(0);
    }
   
}

4  Programación / Programación C/C++ / AYUDA java matrices en: 24 Febrero 2019, 18:07 pm
El numero de columnas y de filas las da el usuario.
No se como lograr que mi programa dado una columna(ingresada por el usuario) me analice cual es el elemento mayor y menor que tiene dicha columna.


Código:

Código
  1. package metodos;
  2. import javax.swing.JOptionPane;
  3.  
  4. public class miMatriz {
  5.    public static int ventas[][];
  6.    public static int mes[];
  7.    public static int vendedor[];
  8.    public static int tf, tc;
  9.  
  10.  
  11.    public static void llenarM(){
  12.        int i, j;
  13.        tc = Integer.parseInt( JOptionPane.showInputDialog(
  14.        "Entre número de meses [1 - 12]:") );
  15.        tf = Integer.parseInt( JOptionPane.showInputDialog(
  16.        "Entre número de vendedores: ") );
  17.        ventas = new int[tf][tc];
  18.        mes = new int[tc];
  19.        vendedor = new int[tf];        
  20.        for(i=0; i<tf; i++){
  21.            for(j=0; j<tc; j++){
  22.                ventas[i][j] = Integer.parseInt(JOptionPane.showInputDialog(
  23.                "Entre ventas del vendedor en ["+i+"]["+j+"]:"));
  24.            }
  25.        }  
  26.    }
  27.  
  28.    public static void mostrarM( ){
  29.        int i, j;
  30.        String aux="Los elementos de la matriz de ventas son: \n";
  31.        for(i=0; i<tf; i++){
  32.            for(j=0; j<tc; j++){
  33.                aux += "[ "+ventas[i][j]+" ]";
  34.            }
  35.            aux+="\n";
  36.        }
  37.        JOptionPane.showMessageDialog(null, aux);
  38.    }
  39.  
  40.    public static void vectorMes(){
  41.        int i, j;
  42.        for(j=0;j<tc;j++){
  43.            for(i=0; i<tf; i++){
  44.                mes[j] += ventas[i][j];
  45.            }
  46.        }
  47.    }
  48.  
  49.    public static void vectorVendedor(){
  50.        int i, j;
  51.        for(i=0; i<tf; i++){
  52.            for(j=0; j<tc; j++){
  53.                vendedor[i] += ventas[i][j];
  54.            }
  55.        }
  56.    }
  57.  
  58.        public static void mostrarVec( String x, int vec[] ){
  59.        int i;
  60.        String aux="< ";
  61.        for(i=0; i<vec.length; i++){
  62.            if( i < (vec.length-1) )
  63.                aux += ""+vec[i]+","
  64.                        + " ";
  65.            else
  66.                aux += ""+vec[i]+" >";
  67.        }
  68.        JOptionPane.showMessageDialog(null, ""+x+"\n"+aux);
  69.    }
  70.  
  71.    public static void MejorVendedor( ){
  72.        int pos=0, i;
  73.        int may=vendedor[0];
  74.        for(i=0; i<vendedor.length; i++){
  75.            if(vendedor[i]>may){
  76.                may=vendedor[i];
  77.                pos=i;
  78.            }
  79.        }
  80.        JOptionPane.showMessageDialog(null, "El mejor vendedor es: "+pos);
  81.    }
  82.  
  83.    public static void PeorVendedor( ){
  84.        int pos1=0, i;
  85.        int men=vendedor[0];
  86.        for(i=0; i<vendedor.length; i++){
  87.            if(vendedor[i]<men){
  88.                men=vendedor[i];
  89.                pos1=i;
  90.            }
  91.        }
  92.        JOptionPane.showMessageDialog(null, "El peor vendedor es: "+pos1);
  93.    }
  94.  
  95.    public static void MejorMes( ){
  96.        int pos=0, i;
  97.        int may=mes[0];
  98.        for(i=0; i<mes.length; i++){
  99.            if(mes[i]>may){
  100.                may=mes[i];
  101.                pos=i;
  102.            }
  103.        }
  104.        JOptionPane.showMessageDialog(null, "El mejor mes de ventas es: "+pos);
  105.    }
  106.  
  107.    public static void PeorMes( ){
  108.        int pos=0, i;
  109.        int men=mes[0];
  110.        for(i=0; i<mes.length; i++){
  111.            if(mes[i]<men){
  112.                men=mes[i];
  113.                pos=i;
  114.            }
  115.        }
  116.        JOptionPane.showMessageDialog(null, "El peor mes de ventas es: "+pos);
  117.    }
  118.  
  119.  
  120.    public static void main(String args[]){
  121.  
  122.        llenarM();
  123.        mostrarM();
  124.        vectorMes();
  125.        mostrarVec("La información de ventas de cada mes es: ", mes);
  126.        vectorVendedor();
  127.        mostrarVec("La información de ventas de cada vendor es: ", vendedor);
  128.        MejorVendedor();
  129.        PeorVendedor();
  130.        MejorMes();
  131.        PeorMes();
  132.        pedirColumna();
  133.        System.exit(0);
  134.    }
  135.  
  136. }
  137.  

MOD: Etiqueta GeSHi.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines