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 - Alex Rodríguez

Páginas: 1 ... 47 48 49 50 51 [52] 53 54 55 56 57 ... 93
1021
Aprender a programar desde cero / Re:Algoritmo genético
« en: 21 de Mayo 2015, 08:41 »
Hola, yo lo que entiendo es que cada posible individuo tienes que representarlo con un array o arreglo de bits (de ceros y unos).

La pregunta es cuántos bits necesitas para representar los individuos presentes en un grafo de n vértices que va a ser coloreado con k colores.

Supón que el grafo fuera compuesto por dos puntos. Aquí parece que lo que se necesita es un bit. Basta indicar que un nodo se representa con un 1 y el otro con un 0. Lo que no tengo claro es el significado de los colores. Por ejemplo si los dos nodos tienen el mismo color no tengo claro si se representarían ambos como un 1 ¿?

Saludos

1022
Hola Dan Aquí los comentarios ;)

Al igual que un formulario debe contener un botón para poder ser enviado, debe indicarse a dónde se envía y cómo se envía (por lo menos). Esto se hace dentro de la etiqueta form mediante los atributos method y action. Esto deberías corregirlo ya que tener un formulario sin esto es como enviar una carta sin indicar a quién se la envías, nunca llegará a ningún lado. Te falta el botón de envío, el method y el action, sin esto el código está imcompleto.

Creo que con estos atributos name="12_17" no haya problema, pero en muchos lenguajes solo se permite que los nombres empiecen por una letra. Para mantener este criterio me parecería mejor name="de12a17"

Lo demás en el código lo veo bien.

Saludos

1023
Hola Dan el ejercicio está correcto, lo que se pedía.

Ten en cuenta que aunque no es contenido de este curso te faltan algunos puntos y comas de cierre

style="text-align: center; color: Red; font-family: Impact"

style="text-align: center; color: Red; font-family: Impact;"

style="color: Red"

style="color: red;"

Saludos

1024
Aprender a programar desde cero / Re:Ejercicio CU00812B
« en: 18 de Mayo 2015, 17:23 »
Hola Darcy, las respuestas son:

a) Falso. Trabajar en remoto significa que trabajamos desde un computador que conecta con un servidor que se encuentra físicamente en otro lugar (normalmente en otra ciudad e incluso en otro país). Pero el punto de conexión podría ser siempre el mismo si quisiéramos (por ejemplo el pc de nuestra casa).

b) Verdadero

c) Falso. Puede que lo hagan a veces, pero no siempre.

d) Verdadero. WampServer podría servir para hacer funcionar a nuestro computador como servidor (esto tendría numerosos problemas, como tener que mantener el computador encendido 24 horas y otros problemas, pero la cuestión es que sí lo permitiría).


1025
Hola RaGa, con el warning tienes razón, mejor eliminarlo usando Iterator<Persona> it = new MiIteratorPersona();

Yo interpretaría esto de la siguiente manera:

Citar
Piensa que un iterador viene siendo “un clon” de la colección a recorrer. Es decir, en vez de operar directamente sobre la colección original operamos sobre una copia.

Al usar un iterador, el recorrido de una colección se basa en su estado inicial. Por ejemplo supongamos que la colección inicialmente tiene cinco elementos. Con un iterador el bucle se repetirá cinco veces, incluso si durante el recorrido añadimos nuevos elementos a la colección. Esta adición (o borrado) durante el recorrido no será visible hasta que termine el recorrido de la colección. Con otros tipos de bucles no basados en iterador no ocurre así, pudiendo generarse resultados imprevistos o errores.

En el ejemplo yo no veo que haya "creación de un clon" quizás habría que redactarlo de otra manera.

Saludos

1026
Hola, el problema de la precisión decimal en este ejercicio se comenta en otros hilos. Viendo este por ejemplo https://www.aprenderaprogramar.com/foros/index.php?topic=1972.0 creo que se puede aclarar un poco el por qué ocurre eso (que es un tanto inesperado). Saludos.

1027
Hola Lepizz como comentas para evaluar palíndromos suelen quitarse los espacios, de hecho en el código java anterior aparecer reflejado:

//Quitar espacios y convertirlo a minusculas para hacer las comparaciones

Es decir, a la hora de comparar no se tendrían en cuenta espacios ni mayúsculas / minúsculas, aunque esto depende de cómo se quiera hacer.

Saludos

1028
Hola, pienso que esto podrías trabajarlo con arrays (o con clases si prefieres) dividiendo el espacio de juego en casillas (una especie de cuadrícula).

Simplificando: supón que tenemos un tablero con seis casillas inicialmente todas vacías.

Las casillas son:

x x x

x x x


La primera posición podemos decir que es fila cero, columna cero.

Inicialmente tendríamos:

casilla[0][0] = "vacia"
casilla[0][1] = "Vacia"
casilla[0][2] = "vacia"

casilla[1][0] = "vacia"
casilla[1][1] = "Vacia"
casilla[1][2] = "vacia"

Ahora se coloca una ficha en la tercera posición de la primera fila, que es la casilla [ 0 ][2], al detectar el evento de colocación de la ficha en esa posición haríamos

casilla[0][2] = "ocupada"

Estando la casilla ocupada ya no admite que se coloque una ficha en esa posición.

En lugar de usar Strings podrías usar 0 como equivalente a vacía y 1 como equivalente a ocupada si prefieres.

Saludos

1029
Hola Macarena, sigue por favor la recomendación de RaGa: cuando quieras poner en los foros tu solución para un ejercicio crea un nuevo tema. De ese modo mantenemos más ordenado el foro evitando mezclar respuestas de personas distintas en un mismo hilo. ¡Gracias!

1030
Hola totalmente de acuerdo con lo comentado por RaGa. Añadir además que una condición como while(true) prácticamente no se usa nunca cuando se está programando. Unicamente se usa a veces por ejemplo para poner ejemplos en un curso, pero while(true) equivale a "repite indefinidamente" y esto no debe utilizarse excepto si sabemos muy bien por qué hacerlo. En este ejercicio no debe usarse ni while(true) ni break.

Saludos

1031
Hola Raga, has planteado una pregunta bastante interesante, porque es un caso un tanto extraño.

Para responder la pregunta tenemos la información del api de Java sobre esta interface https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html:

Citar
public interface Cloneable

A class implements the Cloneable interface to indicate to the Object.clone() method that it is legal for that method to make a field-for-field copy of instances of that class.

Invoking Object's clone method on an instance that does not implement the Cloneable interface results in the exception CloneNotSupportedException being thrown.

By convention, classes that implement this interface should override Object.clone (which is protected) with a public method. See Object.clone() for details on overriding this method.

Note that this interface does not contain the clone method. Therefore, it is not possible to clone an object merely by virtue of the fact that it implements this interface. Even if the clone method is invoked reflectively, there is no guarantee that it will succeed.


Nos dice estas cosas:

- Implementar la interface cloneable sirve para indicar que invocar el método clone() (heredado de Object) es legal para realizar copias de objetos de esa clase.

- Si se invoca el método clone sobre un objeto que es de una clase que no implementa la interface Cloneable se obtendrá un error CloneNotSupportedException

- Por convención, una clase que implemente esta interface debe sobreescribir el método clone de object (que es un método protected en object) con un método clone con modificador de acceso public.

Y aquí viene lo que sorprende:

- Tener en cuenta que esta inteface no contiene el método clone. Por tanto, no va a ser posible hacer una copia de un objeto simplemente por el hecho de que una clase implemente esta interface. A no ser que el método clone esté sobreescrito correctamente en la clase, la llamada a clone puede provocar resultados indeterminados.


Y como conclusiones podríamos sacar estas:

- Esta interface está vacía (lo cual resulta un poco sorprendente)

- Este es un comportamiento definido por el api de Java distinto al comportamiento habitual (y por ello resulta un tanto confuso).

- Lo correcto para implementar el método clone es implementar la interface y sobreescribir el método clone (a pesar de que implementar la interface no obliga a ello).


¿Por qué no se obliga a sobreescribir el método clone? Esto son detalles del lenguaje que habría que preguntarle a los creadores del lenguaje. Supongo que debe haber algún motivo pero como programadores ya sabemos lo necesario aunque nos quede la duda del por qué han hecho esto así.

Saludos

1032
Hola, a este método le veo poca utilidad

Código: [Seleccionar]
    //método que permita añadir objetos de tipo CantanteFamoso a la lista
    public void añadirCantantesFamosos(){
        CantanteFamoso ca=new CantanteFamoso();
        listaCantantesFamosos.add(ca);
    }

Porque lo que haces es añadir un cantante sin datos a la lista, pero un cantante sin datos sirve de poco. Creo que ese código sobra ?

Este método sí es útil pero deberías cambiarle el nombre:

Código: [Seleccionar]
    public void setCantanteFamoso(CantanteFamoso Cantante){
        listaCantantesFamosos.add(Cantante);
    }

Si lo que hace el método es añadir (add) ¿Por qué le pones como nombre de método set? El nombre correcto sería addCantanteFamoso

Sobre las cuestiones que preguntas:

1. Irás aprendiendo a mejorar el orden y reducir código a medida que vayas haciendo más ejercicios

2. Los métodos get y set se suelen incluir aunque no los vayamos a usar (aunque en realidad no es obligatorio incluirlos)

3. Puedes usar un String y olvidarte del char

4. Los get se utilizan cuando es necesario, si no son necesarios no

5. En caso de muchos datos tendrías que hacerlo con un bucle y posiblemente introduciendo los datos en un array o en una colección

6. ¿Por qué? Porque esa línea no está haciendo nada. Deberías borrar tanto el método (que no hace nada sino añadir un cantante vacío) como esa línea.

Saludos

1033
Hola, en el código hay una cosa bastante curiosa (y que se suele ver poco), que es un bucle sin inicialización del contador:

Código: [Seleccionar]
        for(;num2>0;num2--){
            res1=res1*10;
        }

Esto puede escribirse también así:

Código: [Seleccionar]
public class multiplicadorDieces
{
   
    public multiplicadorDieces()
    {
       
    }
   
    public double multiplicarPorDieces(double num1, int num2){
        int res1=1;
        double res2=0;
        for(num2=num2;num2>0;num2--){
            res1=res1*10;
        }
        res2=num1*res1;
        return res2;
    }

}

O escrito de forma un poco más tradicional:

Código: [Seleccionar]
public class multiplicadorDieces {

    public multiplicadorDieces(){ }

    public double multiplicarPorDieces(double num1, int num2){
        int res1=1;
        double res2=0;
        int i;
        for(i=num2;i>0;i--){
            res1=res1*10;
        }
        res2=num1*res1;
        return res2;
    }

}

Saludos

1034
Hola, te digo cómo empezaría yo, aunque si otras personas pueden aportar ideas serían bienvenidas.

Como el juego es muy complicado, antes de intentar crear el juego trataría de hacer un programa simple que me sirviera como base para ir construyendo el juego. Supongamos que el programa simple consiste en poner 4 fichas encima de la pantalla: el doble seis, el seis-cinco, el cinco-cuatro y el cuatro-seis.

Definiría dos zonas: la zona de fichas y la zona de juego.

Inicialmente, se podría arrastrar una ficha desde la zona de fichas hacia la zona de juego. Para simplificar, inicialmente todas las fichas dobles sólo permitiría que fueran en vertical y todas las demás fichas en horizontal.

Ahora tendríamos que hacer supuestos de jugadas. Para detectar los movimientos necesitaríamos detectar el evento de movimiento de una ficha y comprobar que la ficha se coloca en la posición de juego.

Prueba de jugada 1:

Supongamos que arrastramos a la zona de juego el doble seis. A continuación arrastramos el cinco-cuatro. Nos tendría que salir un mensaje: "No está permitido colocar esta ficha".

Prueba de jugada 2:

Supongamos que arrastramos a la zona de juego el doble seis. A continuación arrastramos el cuatro seis. El programa debería colocar la ficha con el seis pegando al doble seis y el cuatro en sentido opuesto, de modo que el seis quede alineado como debe...


¿Cómo comprobar si una ficha puede colocarse?

Podría hacerse de muchas maneras, supongo que lo mejor sería crear una clase ficha donde tengas atributos y puedas establecer posiciones de rotación, pero esto requiere un buen dominio de orientación a objetos y otras cosas. Si no quieres meterte con esto podrías hacerlo intentando mantener en la propiedad Tag del picturebox qué números tiene la ficha y en qué posición está. Por ejemplo, si se coloca un doble seis tendríamos PictureBox1.Tag = "doble6"

Esta ficha sólo sería compatible con fichas como "seis_left_cuatro_right". En estas fichas tienes que diferenciar qué número queda a la izquierda y cuál a la derecha. En caso de intentar colocar sobre un doble seis una ficha "cuatro_left_seis_right" tendrías que rotar la imagen 180 grados y cambiar su atributo a "seis_left_cuatro_rigth" para que quedara la imagen como debe y la información de la ficha como debe.

Una vez conseguido todo esto ya pasaría a ver más cuestiones.

Saludos

1035
Hola Dan, espero que hayas disfrutado de esas vacas y que te sirvan para retomar con fuerzas la programación y resto de actividades.

En el código tienes dos cosas a corregir:

<input type="text" name="año de obtencion de Especialidad" id="año de obtencion de Especialidad">

No debes usar eñes, acentos ni espacios en blanco dentro de los atributos. Debe quedar similar a esto:

<input type="text" name="anno_especialidad" id="anno_especialidad">

Tendrías que cambiar

<label for="anno_especialidad">A&ntilde;o de obtencion de especialidad</label>
<input type="text" name="anno_especialidad" id="anno_especialidad">

Porque tienes repetido obtencion de titulo en ambos formularios.

Y la otra cosa que debes corregir, es que todo formulario debe incluir al menos un botón enviar, aunque no lo pida el enunciado, porque ya el simple hecho de ser un formulario debe hacer que incluyamos un botón. Sería como fabricar un avión sin puertas, ¿cómo haces para que salga volando? En este caso ¿cómo haces para enviar el formulario si no tienes botón? :)

Saludos

1036
Hola, vete pegando el código que vayas creando como se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y pide opinión, intentaremos darte una opinión de dónde se puede mejorar o cosas que veamos bien y que no veamos bien...

Saludos

1037
Por cierto para quien pueda tener curiosidad indicar que crear un programa de juego del dominó completo desde cero es bastante laborioso y requiere bastante tiempo y conocimientos...

1038
Aprender a programar desde cero / Re:Juego del domino
« en: 11 de Mayo 2015, 11:11 »
Hola Andrés, para poder ayudar siempre pedimos que se pegue o añada como archivo adjunto el código necesario (incluidos archivos auxiliares, por ejemplo en este caso archivos de imágenes). La forma de pegar o adjuntar archivos la tienes explicada en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Saludos

1039
Hola, por lo que yo entiendo quieres que cada vez que se arranque el programa los botones aparezcan en distintas posiciones, como si fuera un puzzle desordenado.

Para ello puedes trabajar con propiedades de los controles en tiempo de ejecución (en el código).

En este curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61 en la entrega CU00320A tienes un ejemplo de cómo crear y posicionar con location controles.

Para hacer que se posicionen en distintos lugares (aleatoriamente) deberás crear las coordenadas, puedes asignarle un entero a cada posición y luego hacer que los botones se coloquen en posiciones aletorias. La generación de aleatorios la tienes explicada en la entrega CU00315A del curso.

Saludos

1040
Hola, me he alegrado al leer tu mensaje. Mi enhorabuena pues aunque te ha costado bastante tiempo, al final lo has logrado. El mérito es tuyo. Cuenta siempre con que desde estos foros intentaremos ayudar en la medida de nuestras posibilidades. Suerte!!

Páginas: 1 ... 47 48 49 50 51 [52] 53 54 55 56 57 ... 93

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".