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

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 100
121
Buenas, las observaciones que haría a este ejercicio son las siguientes.

En la clase Vehiculo aparece un método    public static String ContarTiposArray(List<Vehiculo> pArreglo) y otro método public static String EliminaInserta(List<Vehiculo> pArreglo)

Esto métodos no los veo bien ubicados dentro de la forma de programación orientada a objetos. ¿Por qué? Porque cada clase debe tener unas responsabilidades acordes a lo que representa. No es lógico que la clase Vehiculo sea responsable de recibir un List de vehículos y contar los tipos que hay en ella, porque esto no es o no debería ser responsabilidad de un vehículo. Por tanto, ese conteo debería ir en otro sitio, bien en otra clase o bien en el main. Lo mismo para el método de eliminar e insertar.

Respecto al uso de métodos estáticos el problema lo veo precisamente en el diseño. Para invocar un método de la clase, antes tienes que instanciar un objeto. En lugar de instanciar un objeto has recurrido a usar un método estático, lo cual aunque pueda hacerse no resulta un buen diseño en este caso. En lugar de esto tendrías que haber instanciado un vehículo e invocar el método sobre esa instancia. O mejor aún, tener esos métodos en otra clase o en el main, lo cual hubiera sido más lógico.

Respecto a los resultados, se cumple con lo que pedía el ejercicio. En general, los tiempos obtenidos para ejecución con ArrayList son peores que los obtenidos con LinkedList.

Ejemplo usando ArrayList tiempo empleado en la eliminación-inserción (en nanosegundor):2826794
Ejemplo usando LinkedList tiempo empleado en la eliminación-inserción (en nanosegundor):595722

Puede verse un ejemplo de este ejercicio resuelto en https://aprenderaprogramar.com/foros/index.php?topic=5781.0

Salu2

122
Buenas, para quien revise estos códigos, los ejercicios están bien resueltos. Salu2

123
Buenas, el código funciona correctamente. Hay un detalle en que no cumple con lo que pedía el enunciado. Se pedía "el programa debe mostrar por consola los datos de los objetos con idCuadrupedo múltiplo de 1000" mientras que este código muestra todos los elementos. Puede verse una solución donde sí se muestran únicamente los múltiplos de 1000 en https://aprenderaprogramar.com/foros/index.php?topic=6155.0

Salu2

124
Buenas, para quien revise este ejercicio, está bien resuelto y realiza a la perfección lo que se pedía. Hay varias maneras de resolverlo, quien lo desee puede consultar otras soluciones en los foros. Salu2

125
Buenas, para quien revise este código, está bien resuelto y cumple con lo que se pedía. Salu2.

126
Buenas, para quien revise este ejercicio, cumple perfectamente con lo que se pedía. Salu2.

127
Buenas, el ejercicio está bien resuelto. Los dos bucles

Código: [Seleccionar]
for(var i=1;i<=palabra.length;i++){letra[i]=palabra.charAt(i-1);}
for(var i=1;i<=palabra.length;i++){msg=msg+'Letra '+ i+': '+letra[i]+'\n\n';}

podrían haberse fusionado en un solo bucle que realizara todo lo necesario.

Salu2

129
Buenas, para quien revise este ejercicio, cumple correctamente con lo que se pedía. Algún comentario:

- Faltaría incluir como línea inicial <!DOCTYPE html>

- No se aprecia el uso de los índices en el array

Una solución donde se ve más claramente el uso de los índices del array o arreglo puede verse en https://aprenderaprogramar.com/foros/index.php?topic=5011.0

Salu2

130
Buenas, el ejercicio está bien resuelto pero no cumple lo que se pedía "Utilizando un iterador, muestra los datos de los objetos presentes en el objeto GruposDeAvesZoos.", o al menos no lo cumple directamente, en el sentido de que no se utiliza un iterador explícito, sino un for extendido.

Puede verse una solución correcta con uso de un iterador explícito en https://aprenderaprogramar.com/foros/index.php?topic=5922.0

Salu2

131
Buenas, para quien revise este ejercicio, no está correctamente resuelto. Dejo algunos comentarios:

- Faltaría incluir como línea inicial <!DOCTYPE html>

- En el fragmento

if(diametro>1.4 && grosor<0.4){alert("El grosor para esta rueda es inferior al recomendado");}
else if(diametro<=1.4 && grosor>=0.4){alert("El grosor para esta rueda es inferior al recomendado");}

Tenemos una repetición de mensaje que podría haberse ahorrado haciendo un único condicional que contemplara ambas opciones a través de un operador de disjunción or (|| en JavaScript).

- Si introducimos como valores diámetro 1.1 y grosor 0.3 nos sale el mensaje "La rueda es para un vehículo mediano - Introdujo un numero negativo. Introduzca números positivos por favor". Este mensaje es erróneo ya que no hemos introducido ningún número negativo. Por tanto la lógica implementada no es correcta.

Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=3250.0

Salu2

132
Buenas, para quien revise este hilo la respuesta la veo correcta. En esta solución no se cumple estrictamente lo que pedía el enunciado relativo a que "cada atributo de la clase podrá ser exclusivamente una cadena de 12 ceros o de 12 unos". Podría implementarse para forzar a que fuera así, pero esto tampoco es lo realmente relevante de este ejercicio, con lo cual no le veo mayor importancia.

Puede verse otra solución en https://aprenderaprogramar.com/foros/index.php?topic=5703.0

Salu2

133
Buenas, para quien revise este hilo la respuesta me parece correcta aunque para mayor claridad puede verse una explicación más amplia en https://aprenderaprogramar.com/foros/index.php?topic=6848.0

Salu2

134
Buenas, para quien revise este hilo, el ejercicio 1 está bien resuelto. No obstante usar algo como numA = (int)(rnd.nextDouble()*11); parece poco elegante, en el sentido de que se genera un double para luego hacer un casting a un entero. ¿Por qué no generar directamente el entero y ahorrarnos el casting? Tampoco tiene demasiada importancia, pero ahí queda como reflexión.

En el ejercicio 2 además de lo indicado hay un defecto. El ejercicio pedía "que introduzca 6 números enteros comprendidos entre el 1 y el 49 ambos incluidos."
Por tanto los números válidos son del 1 al 49.

Sin embargo para crear los números ganadores en el código se utiliza

pNumerosGanadores[ i ] = (int) (rnd.nextDouble()*50);

¿Qué ocurre si el método nextDouble nos devuelve 0? Un número ganador sería el 0, pero esto no es conforme a lo que dice el enunciado.

De hecho, lo he comprobado y haciendo pruebas me ha salido por ejemplo Combinacion ganadora   :31 40 37 39 2 0  donde vemos que aparece el cero, que no es correcto.

Otro aspecto que sería deseable es que los resultados de la combinación ganadora se mostraran en orden ascendente. Por ejemplo en lugar de Combinacion ganadora   :12 9 42 16 43 11
 que saliera Combinacion ganadora   :9 11 12 16 42 43 


Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=5682.0

Salu2

135
Buenas, para quien revise este hilo, el ejercicio no está bien resuelto. En el apartado 1 cuando dice "El resto de dividir el primer número entre 5." se refiere al resto (módulo) de la división, no a la operación de resta aritmética.
Para hallar el módulo se haría con $primerNumero % 5

En el ejercicio 2 no se han respetado los mensajes que se pedía que se mostraran en el enunciado.

Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=4511.0

Salu2

136
Buenas, para quien revise este hilo, el ejercicio está bien resuelto. Los emojis aparecen en los foros de forma automática cuando se introducen algunos textos, por ejemplo si se escribe 8 ) todo junto aparece 8) para evitar el emoji tenemos la opción de separar los caracteres con un espacio, o bien insertar como código. Cuando se inserta texto como código no aparecen de forma automática los emojis.

Salu2

137
Buenas, para quien revise este ejercicio hago algún comentario. En el ejercicio 1, el código planteado no hace exactamente lo mismo que el código original, en el sentido de que en el código original cuando la variable $haceFrio toma un valor menor que 20, se asigna a la variable $respuesta el contenido "Hace frio", y en caso contrario "No hace frío".

En el código planteado no se usa la variable $respuesta, con lo cual el código no es exactamente equivalente. Sin embargo el resultado que se obtiene sí es el mismo al menos en este caso; si el código fuera más extenso podría afectar en otros lugares. Para hacer el código equivalente debería haberse incluido esa variable.

En el ejercicio 2 hay un pequeño fallo. El enunciado dice <<Si el diámetro es menor o igual a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo pequeño”.>>

Pero el código escrito incluye if ($diametro < 1.4) cuando debería ser if ($diametro <= 1.4)

Esto es a lo que se llama "cierre de intervalos" y es importante tener cuidado en nuestros programas para hacer un correcto cierre de intervalos, ya que no hacerlo bien puede suponer malfuncionamientos en nuestros programas, como ocurriría en este caso si introducimos un diámetro de 1.4

Puede verse una respuesta correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=6570.0

Salu2

138
Buenas, he revisado este ejercicio y desde mi punto de vista no está correcto.

Si introducimos como importe inicial 0,69 y como porcentaje de impuestos 5 obtenemos esto:

Por favor introduzca el importe inicial: 0,69
Por favor introduzca el porcentaje de impuestos: 5
El impuesto a pagar es: 0.04
El importe final es: 0.73



Sin embargo, el impuesto es 0.0345 que se redondearía a 0.03 en lugar de a 0.04 y el importe final debería ser 0.72 en lugar de 0.73

Por tanto parece que el redondeo no lo hace conforme a lo que pedía el enunciado del ejercicio, y al fallar el redondeo falla el resultado final.

Puede verse una solución correcta del ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=5672.0

Salu2

139
Buenas, no veo bien resuelto el ejercicio porque el enunciado nos dice "El minuto 1 se considera que abarca desde los 0 segundos hasta los 59 segundos" mientras que el programa nos devuelve esto:

Introduzca valor de segundos:
59
El minuto es el 1
¿Otro valor (s/n)? s
Introduzca valor de segundos:
60
El minuto es el 1
¿Otro valor (s/n)?

Como se puede ver, según lo que se pide, el segundo 60 debería considerarse minuto 2 mientras que el código nos sigue diciendo que es minuto 1.

Salu2

140
Buenas, para quien revise este ejercicio funciona correctamente. Hay una cuestión que no me parece del todo correcta, pero que también está relacionada con que habría que mejorar el enunciado para evitar que se haga así. Lo que no me parece correcto es almacenar en el mismo array como elemento [ i ][0] el nombre del país, por ejemplo Argentina, y que luego [ i ][1], [ i ][2], [ i ][3] sean ciudades de argentina. ¿Por qué? Porque lo más lógico es que todos los elementos de un array sean de la misma naturaleza, es decir, que sean o bien países, o bien ciudades, pero no algunos elementos de un tipo y otros de otro.
Esto podría solucionarse creando un array de países, como pais[0], pais[1], pais[2], pais[3] y luego el array de ciudades ciudad[0][0], ciudad[0][1], ciudad[0][2] tendría las tres ciudades del país cero.

En este caso declararíamos el array de pais por un lado y String[][] paisCiudad = new String[4][3]; teniendo la primera dimensión 4 elementos (cuatro países) y la segunda dimensión 3 elementos (3 ciudades para cada país).

Salu2

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 100

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