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 - ZSCFCP

Páginas: [1]
1
Buenos días.

Precioso el manejo en la salida del ejercicio de Toni. Enhorabuena. Despues de ver esto cuesta publicar el mio jejeje.

Aun así, lo adjunto por si no esté haciendo bien algo o no interpretando del todo bien los conceptos. Ahí va:

Clase FIGURA:

Código: [Seleccionar]
package CU00694B;

/**
 * Clase Figura.
 *
 * @author ZSCFCP
 * @version 20141125.1.0
 */
public class Figura
{
    protected final Double PI = 3.1416;
    protected Double dimensionPrincipal;

    /** Constructor sin parámetros.  */
    public Figura() { this(0.0d); }
    /** Constructor con parámetros.  */
    public Figura(Double dimensionPrincipal) { this.dimensionPrincipal = dimensionPrincipal; }

    /** Métodos getter y setters */
    public void setDimensionPrincipal(Double dimensionPrincipal) { this.dimensionPrincipal = dimensionPrincipal; }
    public Double getDimensionPrincipal() { return dimensionPrincipal; }
    /** Otros métodos. */
    @Override
    public String toString() {
        return "Dimensión principal = ".concat(dimensionPrincipal.toString());
    }
    public void mostrarDatos() {System.out.println(toString());}       
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Figura) {
            Figura tmpFig = (Figura) obj;
            if (this.dimensionPrincipal.equals(tmpFig.dimensionPrincipal)) {return true;} else {return false;}
        } else {return false;}
    }
}


Clase CUADRADO:

Código: [Seleccionar]
package CU00694B;

/**
 * Clase Cuadrado.
 *
 * @author ZSCFCP
 * @version 2015112.1.0
 */
public class Cuadrado extends Figura
{
    private Double areaCuadrado;
    /** Constructor for objects of class Cuadrado (sin parametros)   */
    public Cuadrado()   { super(0d); areaCuadrado=0d;}
    /** Constructor for objects of class Cuadrado (con parametros)   */
    public Cuadrado(Double dimensionPrincipal)   { super(dimensionPrincipal); calcularArea(); }

    /**
     * Método para calcular el área del cuadrado a partir del valor del lado proporcionado.
     * @return     devuelve un double con el valor del área del cuadrado.
     */
    public void calcularArea()
    {
        areaCuadrado = dimensionPrincipal * dimensionPrincipal;
    }
   
    @Override
    public String toString() {
        return super.toString().concat(" / Área del cuadrado = ").concat(areaCuadrado.toString());
    }   
   
    public void mostrarDatos() {super.mostrarDatos();}
   
    public boolean equals(Object obj)
    {
        if (obj instanceof Cuadrado) {
             Cuadrado tmpCuadrado = (Cuadrado) obj;
            if (super.equals(tmpCuadrado) && this.areaCuadrado.equals(tmpCuadrado.areaCuadrado)) { return true; } else { return false; }
        } else { return false; } 
    }
}


Clase CIRCULO:

Código: [Seleccionar]
package CU00694B;

/**
 * Clase Circulo.
 *
 * @author ZSCFCP
 * @version 2015112.1.0
 */
public class Circulo extends Figura
{
    private Double areaCirculo;
    /** Constructor for objects of class Circulo (sin parametros)   */
    public Circulo()   { super(0d); areaCirculo=0d;}
    /** Constructor for objects of class Circulo (con parametros)   */
    public Circulo(Double dimensionPrincipal)   { super(dimensionPrincipal); calcularArea(); }

    /**
     * Método para calcular el área del circulo a partir del valor del radio proporcionado.
     * @return     devuelve un double con el valor del área del circulo.
     */
    public void calcularArea()
    {
        areaCirculo = PI * dimensionPrincipal * dimensionPrincipal;
    }
   
    @Override
    public String toString() {
        return super.toString().concat(" / Área del círculo = ").concat(areaCirculo.toString());
    } 
   
    public void mostrarDatos() {super.mostrarDatos();}
   
    @Override
    public boolean equals(Object obj)
    {
        if (obj instanceof Circulo) {
             Circulo tmpCirculo = (Circulo) obj;
            if (super.equals(tmpCirculo) && this.areaCirculo.equals(tmpCirculo.areaCirculo)) { return true; } else { return false; }
        } else { return false; } 
    }
}


Clase LISTAFIGURAS (esta no esta prevista en el enunciado pero lleno e itero en la siguiente un ArrayList de figuras):

Código: [Seleccionar]
package CU00694B;

import java.util.ArrayList;
import java.util.List;

public class ListaFiguras{
    private List<Figura> listaFiguras;
//Constructor
    public ListaFiguras () {
        listaFiguras = new ArrayList <Figura> ();
    }
//Métodos
    public void addFigura (Figura figura) { listaFiguras.add(figura); } 
    public List<Figura> viewListaFiguras()     { return listaFiguras; }
} //Cierre de la clase


y por ultimo la clase TEST:

Código: [Seleccionar]
package CU00694B;

import java.util.Iterator;

/**
 * Clase TEST del ejercicio CU00694B para probar la sobreescritura de metodos toString() y equals().
 *
 * @author ZSCFCP
 * @version 20141126.1.0
 */
public class Test
{
    public static void main (String [ ] Args)
    {
        ListaFiguras listFig1 = new ListaFiguras();
       
        Cuadrado cuad1 = new Cuadrado(5.0d);
        Cuadrado cuad2 = new Cuadrado(10.0d);
        Cuadrado cuad3 = new Cuadrado(5.0d);
       
        Circulo  circ1 = new Circulo(6.0d);
        Circulo  circ2 = new Circulo(10.d);
        Circulo  circ3 = new Circulo(6.0d);
       
        Figura   figu1 = new Figura(5.0d);
        Figura   figu2 = new Figura(6.0d);
        Figura   figu3 = new Figura(7.0d);
       
        listFig1.addFigura(cuad1); listFig1.addFigura(cuad2); listFig1.addFigura(cuad3);
        listFig1.addFigura(circ1); listFig1.addFigura(circ2); listFig1.addFigura(circ3);
        listFig1.addFigura(figu1); listFig1.addFigura(figu2); listFig1.addFigura(figu3);
       
        Iterator<Figura> it = listFig1.viewListaFiguras().iterator();
        Figura tmpFig=null;
        String cabecera=null;
        String separador="________________________________________________________________\n";
        System.out.println(separador);
        System.out.println("   Las figuras que constan son las siguientes: ");
        System.out.println(separador);
        while (it.hasNext())
        {
            tmpFig = it.next();
            if (tmpFig instanceof Circulo) {cabecera="CIRCULO";}
            else {if (tmpFig instanceof Cuadrado) {cabecera="CUADRADO";}
                  else {if (tmpFig instanceof Figura) {cabecera="FIGURA";}}}
            System.out.println("Objeto: \"" + cabecera + "\"");
            tmpFig.mostrarDatos();
            System.out.println(separador);           
        }
           
        System.out.println ("¿Son iguales los cuadrados cuad1 y cuad2?: " + cuad1.equals(cuad2) );
        System.out.println ("¿Son iguales los cuadrados cuad1 y cuad3?: " + cuad1.equals(cuad3) );       
        System.out.println ("¿Son iguales los circulos  circ1 y circ2?: " + circ1.equals(circ2) );       
        System.out.println ("¿Son iguales los circulos  circ1 y circ3?: " + circ1.equals(circ3) );
        System.out.println ("¿Son iguales las figuras   figu1 y figu2?: " + figu1.equals(figu2) );             
        System.out.println ("¿Son iguales las figuras   figu1 y figu3?: " + figu1.equals(figu3) );                     
        System.out.println ("¿Son iguales cuad1 y circ3?: " + cuad1.equals(circ3) );   
        System.out.println ("¿Son iguales cuad1 y figu1?: " + cuad1.equals(figu1) );       
        System.out.println ("¿Son iguales circ1 y figu2?: " + circ1.equals(figu2) );     
       
    }
}

Gracias y saludos.

2
Buenas.

Una cosa quería decir de la utilización de IF anidados preguntando con "instanceof".
Ya que me he dado un buen susto en mi ejecución y ya entendí porqué.

Hay que tener en su uso en esta practica muy presente, que el orden en el que se pregunte por las clases SI QUE INFLUYE.

Es decir, si pregunto en el primer IF p.ej. por Producto Fresco:

 "Producto tmp = it.next();
            if (tmp instanceof PFresco) {"

y PFresco está jerarquicamente por encima de PRefriguerado, aunque mi primera iteración (primer elemento de mi lista) contenga un PRefrigerado, VA A ENTRAR por el primer IF y no va a llegar al que pregunta por PRefrigerado. Dado que creo que "instanceof" lo que te comprueba es si "tmp" puede instanciar un PFresco, es decir, si cumple con sus requisitos y, efectivamente, "tmp" en ese primer elemento de la lista, ademas de poder instanciar un PRefrigerado, TAMBIEN puede instanciar a su padre PFresco. Por lo que el primer IF del ejemplo se cumple y entra.

No se si logré explicarme. Si no lo hice, o estoy equivocado contesten. Gracias.

3
Buenos días.

Como en otras ocasiones, me gusta hacer mi aportación al foro en cada ejercicio, por lo que os incluyo un rar con mi propuesta y una imagen de la relación de herencia.

Solo comentar que no me he complicado con entradas por teclado o mantenimiento de BBDD pues entiendo no es el fin del ejercicio. Si lo es el entendimiento y manejo optimo de la herencia. Por ello me he centrado en intentar el mayor grado de abstracción para el ejercicio propuesto.

Espero de los profes me lo revisen y hagan los comentarios que gusten, como siempre, con el fin de aprender uno y todo el que detrás lo lea.

Gracias de antemano.

Saludos.



4
Buenos días.

Aquí les dejo mi aportación al ejercicio CU00681B para que si pueden lo revisen y me digan sus carencias y como mejorarlo. Muchas gracias por adelantado.

Les pego el código:


clase "Vehiculo":

Código: [Seleccionar]
import javax.swing.JDialog;
import javax.swing.JOptionPane;

/**
 * Clase para identificar un Vehiculo, por su marca (tipo enumerado) y su matricula (tipo String)
 * @author ZSCFCP
 * @version V.1.0
 */
public class Vehiculo
{
    enum MarcaDeVehiculo {FORD,TOYOTA,SUZUKI,RENAULT,SEAT};

    private String matricula;
    private MarcaDeVehiculo marca;

    /** Constructor para objetos de la clase Vehiculo  */
    public Vehiculo(){
        matricula = "";
        marca = MarcaDeVehiculo.SUZUKI;
    }

    // METODOS GETTERS
    public void setMatricula (String matricula) {this.matricula = matricula;}   
    public void setMarca (MarcaDeVehiculo marca) {this.marca = marca;}

    // METODOS SETTERS
    public String getMatricula() {return this.matricula;};
    public MarcaDeVehiculo getMarca() {return this.marca;};   

    // OTROS METODOS.
    public void darMarca (int seleccion) {
        switch (seleccion) {
            case 0: setMarca (MarcaDeVehiculo.FORD); break;
            case 1: setMarca (MarcaDeVehiculo.TOYOTA); break;
            case 2: setMarca (MarcaDeVehiculo.SUZUKI); break;
            case 3: setMarca (MarcaDeVehiculo.RENAULT); break;
            case 4: setMarca (MarcaDeVehiculo.SEAT); break;
            default:  break;
        } // fin del switch
    }   
}


Clase "ListaDeVehiculos":

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Clase para gestionar una Lista de de objetos tipo Vehiculos dentro de una ArrayList.
 *
 * @author ZSCFCP
 * @version V.1.0.
 */
public class ListaDeVehiculos
{
    //Declaracion de atributos.
    private ArrayList<Vehiculo> listaDeVehiculos;
   
    /** Constructor de la clase ListaDeVehiculos. */
    public ListaDeVehiculos()   {listaDeVehiculos = new ArrayList<Vehiculo>();}
   
    /** Método para añadir un Vehiculo a la lista. */
    public void addVehiculo(Vehiculo miVehiculo) {listaDeVehiculos.add(miVehiculo);}
   
    /** Método para borrar un Vehiculo de la lista. */
    public Vehiculo removeVehiculo(int posicion)
    {   if (posicion>=0 && posicion<listaDeVehiculos.size())
           {return listaDeVehiculos.remove(posicion);}
        else {return null;}
    }
   
    /** Método para devolver el vehiculo de una posicion dada. */
    public Vehiculo getVehiculo(int posicion)
    {   if (posicion>=0 && posicion<listaDeVehiculos.size())
           {return listaDeVehiculos.get(posicion);}
        else {return null;}
    }
   
    /** Método para devolver el tamaño del ArrayList de Vehiculos. */
    public int tamanhoListaDeVehiculos() {return listaDeVehiculos.size();}
   
    /** Método para listar los Vehiculos de la ArrayList. */
    public void MostrarListaDeVehiculos()
    {
        Iterator <Vehiculo> itV = listaDeVehiculos.iterator();
        Vehiculo tmpV = new Vehiculo();
        int cont = 0;
        while (itV.hasNext())
        {
            tmpV = itV.next();
            System.out.println((++cont) + "\t" + tmpV.getMarca() + "\t" + tmpV.getMatricula());
        }
    }
   
}


Clase "TestListaDeVehiculos":

Código: [Seleccionar]
import javax.swing.JOptionPane;

/**
 * Clase main para que el usuario mantenga el ArrayList de objetos tipo Vehiculo.
 *
 * @author ZSCFCP
 * @version V.1.0.
 */
public class TestListaDeVehiculos
{
    public static void main (String [ ] Args)
    {

        //crear lista de vehiculos
        ListaDeVehiculos miLista = new ListaDeVehiculos();


        //mostrar menu al usuario
        boolean ejecutar = true;
        do {
                Object[] selectionValues = { "Matricular nuevo vehículo",
                                             "Visualizar vehículos matriculados",
                                             "Retirar vehiculo de la lista",
                                             "Salir del programa"};
                String initialSelection  =   "Matricular nuevo vehículo";
                int seleccion = JOptionPane.showOptionDialog(null,
                                                            "Seleccione opcion",
                                                            "MANTENIMIENTO DE VEHICULOS",
                                                            JOptionPane.DEFAULT_OPTION,
                                                            JOptionPane.QUESTION_MESSAGE,
                                                            null,    // null para icono por defecto.
                                                            selectionValues,
                                                            initialSelection);
               
                switch(seleccion) {
                    case 0:
                        Vehiculo miCoche = new Vehiculo();
                        int seleccion2 = JOptionPane.showOptionDialog(null,
                                                     "Seleccione la marca",
                                                     "MANTENIMIENTO DE VEHICULOS",
                                                     JOptionPane.DEFAULT_OPTION,
                                                     JOptionPane.QUESTION_MESSAGE,
                                                     null,
                                                     new Object[] {"FORD", "TOYOTA", "SUZUKI", "RENAULT", "SEAT"},
                                                     "FORD");
                        miCoche.darMarca(seleccion2); //metodo setter del objeto vehiculo.
                        String matricula = JOptionPane.showInputDialog("Introduzca la matrícula del vehiculo:");
                        miCoche.setMatricula(matricula); //metodo setter del objeto vehiculo.
                        miLista.addVehiculo(miCoche); //metodo para añadir del objeto ListaDeVehiculos.
                        break;
                    case 1:
                        if (miLista.tamanhoListaDeVehiculos()>0) {
                            miLista.MostrarListaDeVehiculos();
                        } else {
                            JOptionPane.showMessageDialog(null, "Ups... de momento la lista esta vacia. Deberá matricular algun vehículo antes.",
                            "¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);     
                        }
                        break;
                    case 2:
                        int size = miLista.tamanhoListaDeVehiculos();
                        if (size==0) {
                            JOptionPane.showMessageDialog(null, "Ups... de momento la lista esta vacia. Deberá matricular algun vehículo antes.",
                                                          "¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);     
                            break;
                        }
                        String respuesta = JOptionPane.showInputDialog("Introduzca la posicion del vehiculo a retirar de la lista");
                        if (Comunes.isNumeric(respuesta)) {
                            int delPos = Integer.parseInt(respuesta);
                            if (size >= delPos && delPos>0) {
                                miLista.removeVehiculo(delPos-1);
                            } else {
                                JOptionPane.showMessageDialog(null, "Debe introducir un numero de posición válido",
                                                              "¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);
                            }                           
                        } else {
                            JOptionPane.showMessageDialog(null, "Debe introducir un numero de posición válido",
                                                          "¡¡¡ATENCION!!!", JOptionPane.WARNING_MESSAGE);

                           
                        }
                        break;
                    case 3:
                        ejecutar = false;
                    default:
                        break;
                    }
        } while (ejecutar);
    }
}


Clase "Comunes":

Código: [Seleccionar]

/**
 * Clase para utilidades comunes
 */
public class Comunes
{
    public Comunes() {}
   
    public static boolean isNumeric(String cadena)
    {
        try {
            Integer.parseInt(cadena);
            return true;
        } catch (NumberFormatException nfe){
            return false;
    }
    }
}

5
Buenas tardes.

Despues de leer estos post sobre el ejercicio y dar cabezazos para que me entraran las cosas en la cabeza, os dejo el aporte. Intenté minimizar el código, quedando así:

Código: [Seleccionar]
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;

public class Polimorfismo
{
    public static void main(String [] args )
    {
        //DECLARACION ATRIBUTOS.
        List<Set> miLista                  = new ArrayList<Set>();
        Set<Integer>   contenedorDeNumeros = new TreeSet<Integer>();
        Set<String>    contenedorDeCadenas = new HashSet<String>();
        //RELLENO DE LOS 2 SETS.
        contenedorDeNumeros.add(new Integer(2));
        contenedorDeNumeros.add(new Integer(8));
        contenedorDeNumeros.add(new Integer(5));       
        contenedorDeCadenas.add("sol");
        contenedorDeCadenas.add("luna");
        contenedorDeCadenas.add("saturno");
        //CARGA DE LOS SETS DENTRO DEL ARRAYLIST.
        miLista.add(contenedorDeCadenas);
        miLista.add(contenedorDeNumeros);

        //CREACION DE ITERACIONES Y ELEMENTOS AUXILIARES.
        Iterator<Set> it1 = miLista.iterator();
        Iterator      it2 = null;
        String coma = ", "; String punto = ".";
        Set     tmpSet  = null;
        Object  tmpObj = null;
       
        while (it1.hasNext())
        {
            tmpSet = it1.next();

            /** Discriminar tipo de datos en ArrayList para mostrar su contenido */
            // en caso de que la clase instanciada sea un Hashset.
            if (tmpSet instanceof java.util.HashSet)
            {
                System.out.println ("\n El objeto leido del ArrayList es del tipo: " + tmpSet.getClass().getName());
                it2 = tmpSet.iterator();
            }
            // en caso de que la clase instanciada sea un TreeSet, en este caso tenemos que ordenar el iterador descendentemente.
            if (tmpSet instanceof java.util.TreeSet)
            {
                System.out.println ("\n El objeto leido del ArrayList es del tipo: " + tmpSet.getClass().getName());
                TreeSet tmpTS = (TreeSet) tmpSet;
                it2 = tmpTS.descendingIterator();
            }
            while (it2.hasNext())
            {
                if (tmpObj != null) { System.out.print(coma);}
                tmpObj= it2.next();
                System.out.print (tmpObj);
            }
            System.out.print (punto);
           
        }
    }
}

Salu2 y gracias!! :) :) :)

6
Gracias por los comentarios.

La verdad es que puse la "N" para salir ya que aun no controlo lo del boton cancelar, las excepciones y demas.

En cuanto al foco me pasa lo mismo. Desconozco la forma de controlarlo (aun).

7
ah por cierto!, se me paso informarles que utilizo en mi código una clase y metodo que no esta expuesto. Lo vi buscando por la red y lo añadí a mi proyecto. El metodo sirve para saber si lo introducido por teclado por el usuario se tratan o no de numeros, de manera que hagamos posteriormente una conversión con garantías:

Citar
/**
 * Clase para utilidades comunes
 */
public class Comunes
{
    public Comunes() {}
   
    public static boolean isNumeric(String cadena)
    {
        try {
            Integer.parseInt(cadena);
            return true;
        } catch (NumberFormatException nfe){
            return false;
    }
    }
}

8
Buenos días a todos.

Estoy siguiendo con sumo interes el curso, y es la primera vez que escribo, queriendo aportar mi forma de resolver el ejercicio de la pagina CU00672B y que me corrijan todo aquello que sea subsanable. Yo para los dialogos he estudiado y utilizado los JOptionPane. Espero les parezca bien:

Citar
/**--------
 EJERCICIO
-----------
 Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El
programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente
adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es
menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario
introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es
mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el
ordenador.
 */

import javax.swing.JOptionPane;
import java.util.Random;


public class AdivinaNumero
{
    public static void main (String [] Args)
    {

        Integer numOrdenador = new Integer(0);
        Random numAleatorio = new Random();
        numOrdenador = (Integer) (numAleatorio.nextInt(100) + 1);

        String entradaUsuario = new String();
        Integer numUsuario = new Integer();

        boolean adivinado = false;
        boolean rangoCorrecto=true;
       
        while (!adivinado)
        {
            entradaUsuario = JOptionPane.showInputDialog(null,"Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo (Pulse 'N' para salir)");
                       
            if (Comunes.isNumeric(entradaUsuario))
            {
                numUsuario = numUsuario.valueOf(entradaUsuario);
               
                if (numUsuario < 1 || numUsuario > 100)
                {
                    JOptionPane.showMessageDialog(  null,"El nº a introducir debe estar comprendido entre el 1 y el 100",
                                                    "¡¡¡ ERROR !!!",JOptionPane.ERROR_MESSAGE );
                    rangoCorrecto=false;
                } else {
                    rangoCorrecto=true;
                }
                if (numUsuario.equals(numOrdenador))
                {
                    JOptionPane.showMessageDialog(  null,"¡¡¡ Enhorabuena, lo ha adivinado !!!",
                                                    "¡¡¡ ACIERTO !!!",JOptionPane.INFORMATION_MESSAGE );
                    adivinado = true;
                }
                if (numUsuario>numOrdenador && rangoCorrecto)
                {
                    JOptionPane.showMessageDialog(  null, "No has acertado: el número a adivinar es menor de " + entradaUsuario + ". Prueba otra vez",
                                                    "¡ SIGUE INTENTANDOLO !",JOptionPane.WARNING_MESSAGE );

                }
                if (numUsuario<numOrdenador && rangoCorrecto)
                {
                    JOptionPane.showMessageDialog(  null,"No has acertado: el número a adivinar es mayor de " + entradaUsuario + ". Prueba otra vez",
                                                    "¡ SIGUE INTENTANDOLO !",JOptionPane.WARNING_MESSAGE );

                }               
                   
            } else {
                if (entradaUsuario.equals("N"))
                {
                    adivinado=true;
                } else {
                    JOptionPane.showMessageDialog(  null,"Introdujo caracteres alfabéticos. Sólo puede teclear un numero entre 1 y 100",
                                                    "¡¡¡ ERROR !!!",JOptionPane.ERROR_MESSAGE );
                }
            }
        }
        JOptionPane.showMessageDialog(  null,"¡¡¡ Hasta pronto !!!","¡GRACIAS!",JOptionPane.INFORMATION_MESSAGE );         
    }
}

Muchas gracias de antemano! y enhorabuena por la web!

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".