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 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 91
161
Buenas Pepote21, al hacer pruebas he obtenido algo parecido a lo que indicadas (en mi caso unos 8.000.000 de tiempo con ArrayList frente a 24.000.000 con LinkedList aproximadamente). El tiempo invertido depende del computador sobre el que se ejecute el código.

En mi caso he obtenido esto:

EJECUCIONES CON LINKEDLIST

Resumen: hay 1238 coches, 1278 camiones, 1261 furgonetas y 1223 motos.
Se han eliminado de la lista 3762 vehiculos quedando 1238 coches
Se han invertido 23901571 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


Resumen: hay 1280 coches, 1260 camiones, 1231 furgonetas y 1229 motos.
Se han eliminado de la lista 3720 vehiculos quedando 1280 coches
Se han invertido 33130768 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


Resumen: hay 1247 coches, 1264 camiones, 1245 furgonetas y 1244 motos.
Se han eliminado de la lista 3753 vehiculos quedando 1247 coches
Se han invertido 21486611 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


EJECUCIONES CON ARRAYLIST

Resumen: hay 1235 coches, 1267 camiones, 1271 furgonetas y 1227 motos.
Se han eliminado de la lista 3765 vehiculos quedando 1235 coches
Se han invertido 6992139 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


Resumen: hay 1225 coches, 1268 camiones, 1225 furgonetas y 1282 motos.
Se han eliminado de la lista 3775 vehiculos quedando 1225 coches
Se han invertido 9395982 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


Resumen: hay 1272 coches, 1230 camiones, 1226 furgonetas y 1272 motos.
Se han eliminado de la lista 3728 vehiculos quedando 1272 coches
Se han invertido 9999829 nanosegundos en eliminar y añadir vehiculos
Resumen: hay 5000 coches, 0 camiones, 0 furgonetas y 0 motos.


Hay una cosa que no me parece correcta en cómo has resuelto el ejercicio: tú no has implementado las listas como LinkedList ni como ArrayList, sino dentro de una clase creada por tí donde tienes como atributo de clase un LinkedList ó ArrayList. Es decir, no has trabajado indirectamente con las clases estructuras de datos en Java, sino indirectamente. Eso puede tener consecuencias que habría que analizar y no es lo que proponía el ejercicio, por eso veo más correcta una solución como la que se propone en https://www.aprenderaprogramar.com/foros/index.php?topic=5781.0

El ejercicio tal y como lo has planteado, desde mi punto de vista, no cumple con lo que se pedía

Salu2

162
Buenas Pepote21, código bien planteado. Hay distintas alternativas para resolver este ejercicio, no veo ninguna objeción a esta solución. Nota: repetir de nuevo, poner título a los temas según se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

163
Buenas paramonso, repeating again: look at https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 and please follow the rules to write in forums

He probado tu código en Firefox y no me ha funcionado correctamente. Inicialmente, me aparece un botón "Crear cuenta bancaria". Cuando lo pulso, aparece un formulario que pide Nombre, Apellidos e Ingreso Efectivo, pero no aparece ningún botón que permita hacer nada. Si relleno los datos y pulso fuera del formulario aparece un botón actualizar. Cuando pulso ese botón, aparece un error (NS_ERROR_XPC_SECURITY_MANAGER_VETO:)

En definitiva, no veo que el código funcione correctamente. Deberías revisarlo. Una cosa en la que me parece que has incurrido es en tratar de hacer un ejercicio más amplio y con mayor funcionalidad de lo que se pedía. Esto está bien, pero se corre el riesgo de desviarse y tener errores (a más código más posibilidad de tener errores).

Salu2

164
Buenas paramonso, repetir (una vez más) ... para poner título a los temas de los foros hacerlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

El ejercicio está bien resuelto. Un único detalle a comentar, si escribo prueba at probando.com la cadena que queda es prueba @ probando.com que deja espacios intermedios.

Esto se puede solucionar haciendo el simple cambio de varEmail.value =Cambio.replace(/at/g,'@');

Por lo mismo introduciendo los espacios:

varEmail.value =Cambio.replace(/ at /g,'@');

De ese modo la cadena que quedaría sería prueba@probando.com

Salu2

165
Buenas, veo el ejercicio bien resuelto. En otros hilos se ha propuesto su solución usando BigDecimal, pero esta solución que has planteado aparentemente es buena porque es simple. Lo bueno, si simple, dos veces bueno.

Salu2

166
Buenas, quizás sea tarde pero por dar una idea a quien se le plantee una situación así, pienso que una opción es crear una vista usando el gestor de base de datos que se esté empleando, por ejemplo phpMyAdmin. Una vista viene siendo una tabla creada a partir de una consulta. Para ello en phpMyAdmin se debe ejecutar la consulta y una vez realizada pulsar en el enlace "CREATE VIEW". Al darle a create view debes poner un nombre de vista (view name) y los nombres de las columnas con que desees nombrar las columnas del resultado de la consulta. Una vez tengas la vista creada, puedes hacer consultas sobre ella. En este caso sería un SELECT * FROM nombre_vista WHERE 'current'=1

Salu2

167
Buenas, los apartados 1 y 2 los veo correctos. El ejercicio 3 aunque duplica el nodo cada vez que se pulsa en "Clonar" diría que no cumple con lo que pedía el ejercicio porque supuestamente debería clonarse el nodo al pulsar en el propio nodo, es decir, al pulsar en "Pulsa aquí para duplicar este nodo" y no al pulsar en el botón clonar. Es un detalle para adaptar la respuesta a lo que pedía concretamente el enunciado del ejercicio simplemente.

Salu2

168
Buenas paramonso, recuerda poner títulos adecuados a los temas (ver https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0)

El código es compacto y cumple con lo que se pedía. Lo veo todo bien, únicamente indicarte que yo en lugar de nodoA_Crear hubiera puesto como nombre nodoReferencia en lugar de nodoA_Crear pues me parece más claro, pero es solo un comentario.

Salu2

169
Buenas LuisM, al ejecutar el programa he obtenido un resultado que no concuerda con lo que dice el enunciado. El enunciado dice "Supón que un partido de fútbol tiene una duración de 90 minutos. El minuto 1 se considera que abarca desde los 0 segundos hasta los 59 segundos. El minuto 2 abarca desde los 60 segundos hasta los 119 segundos. Así sucesivamente..."

Por tanto si introdujéramos 60 segundos debería decirnos minuto 2 pero sin embargo obtengo esto:

Introduzca valor de segundos:
32
Los minutos transcurridos en el partido son :1
¿Otro valor (s/n)?
s
Introduzca valor de segundos:
60
Los minutos transcurridos en el partido son :1
¿Otro valor (s/n)?


Otro problema que he encontrado es que el bucle de control no responde bien: cuando pide s/n si se pulsa intro, aparece un error java.lang.StringIndexOutBoundsException, esto no debería ocurrir.

Deberías revisar el código

Salu2

170
Buenas LuisM, tu código funciona pero has hecho algo un tanto extraño. Has creado un array unidimensional de 4 países, otro array unidimensional de 12 ciudades (4x3=12, 3 ciudades para cada país), y un array multidimensional de 4x3

Luego vas pidiendo países y ciudades, y en la matriz vas almacenando

paisciudad[0][0] = 0;
paisciudad[0][1] = 1;
paisciudad[0][2] = 2;
paisciudad[1][0] = 3;
paisciudad[1][1] = 4;
paisciudad[1][2] = 5;

Es decir, vas asignando a cada elemento del array el índice de una ciudad, pero eso no parece tener mucha lógica. Si ya dispones de esos índices, ¿entonces para qué usar la matriz multidimensional?

La idea de este ejercicio es no usar arrays unidimensionales, sino únicamente una matriz multidimensional.

Para repasar los conceptos de array unidimensional y multidimensional y cómo pueden usarse e interpretarse sería conveniente hacerlo con el curso Bases de la programación nivel I: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Puedes ver otras propuestas de solución para este ejercicio en los foros, también te pueden guiar para ver cómo podría ser una solución más coherente.

Salu2

171
Buenas, para poner título a los temas, debe hacerse según se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Aunque aparentemente funcione, este código no debe considerarse bueno porque una línea genera error, en concreto <div id="uno" onclick="this.">?</div>

Además has definido con el mismo id diferentes div, esto no es una buena práctica. En una web los ids deben ser únicos y no repetirse. Si quieres aplicar un mismo estilo a diferentes elementos debes hacerlo usando class en lugar de id.

Salu2

173
Buenas, para poner título a los temas, debe hacerse según se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

El código cumple con lo que pedía el ejercicio.

Las declaraciones como var dato = [],numero,calcular; no las veo demasiado recomendables porque resultan un tanto confusas, aunque estén permitidas por el lenguaje. Veo más claro si se quiere:
var dato = [];
var numero, calcular;

Otra cosa que no veo adecuado es usar como nombre de variable calcular. calcular es más propio de nombre de función o método que de nombre de variable. Como nombre de variable resulta más lógico calculo, o resultadoCalculo, en lugar de calcular.

Salu2

174
Buenas LuisM

En etiquetas sin cierre explícito como <meta charset="utf-8"> recomendamos introducirlo así: <meta charset="utf-8" /> para cumplir el estándar XHTML.

En el textarea has introducido dentro del textarea lo que se supone era el texto indicando el contenido del textarea, es decir, igual que ponías Nombre: , País: , etc. tenía que ponerse Consulta que se quiere realizar:

Sin embargo al poner
<textarea name="consulta" rows="3" cols="40">...Consulta que se quiere realizar...</textarea>

se ve el texto dentro del textarea. No tiene demasiada importancia porque al fin y al cabo se entiende.

El botón para cancelar no muestra dentro el texto "Esto borrará los datos" (se supone que debía mostrarse dentro del botón ya que el ejercicio dice un botón para restablecer de tipo button que muestre dentro del botón lo siguiente: <<Pulse aquí para cancelar>>, un salto de línea, y el texto <<Esto borrará los datos>>. )

Salu2

175
Buenas, para poner título a los temas, debe hacerse según se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Este ejercicio se corresponde con la entrega CU01135E del curso (en el título has puesto supongo que por error 34E en lugar de 35E, lo he corregido)

El código que has planteado usa innerHTML, cuando innerHTML no se explica hasta la entrega CU01138E, por lo tanto la solución planteada parece que no se ajusta a la programación del curso

Salu2

176
Buenas LuisM. Los ejercicios no están bien resueltos. En la entrega CU00903C se trabaja con arrays o arreglos de datos primitivos por ejemplo int[ ] edad = new int[4];

En cambio tú has usado ArrayList que se trata de una clase para contener objetos. En Java hay que recordar que no es lo mismo un int que un Integer por ejemplo, aunque sean tipos relativamente equivalentes.

Por tanto aunque los programas funcionen, no se corresponde con el contenido visto en la entrega CU00903C

Los tipos de datos y tipos de arrays en Java están explicados en el curso básico de Java: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Salu2

177
Buenas, para escribir en los foros es conveniente seguir las reglas que se indican en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Parece ser que BufferedImage es la mejor forma para convertir una imagen en un array de bytes. No obstante, también habría otras maneras de hacerlo. Copio aquí el código que he encontrado de dos formas alternativas para ello por si pudiera servir de ayuda. El primer código sería equivalente al segundo, pero el segundo es mucho más compacto.

Código alternativa 1:

Código: [Seleccionar]
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
 
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
 
public class ConvertImage {
 
    public static void main(String[] args) throws FileNotFoundException, IOException {
    /*
    * In this function the first part shows how to convert an image file to
    * byte array. The second part of the code shows how to change byte array
    * back to a image
    */
        File file = new File("C:\\rose.jpg");
        System.out.println(file.exists() + "!!");
 
        FileInputStream fis = new FileInputStream(file);
        //create FileInputStream which obtains input bytes from a file in a file system
        //FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.
 
        //InputStream in = resource.openStream();
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        try {
            for (int readNum; (readNum = fis.read(buf)) != -1;) {
                bos.write(buf, 0, readNum);
                //no doubt here is 0
                /*Writes len bytes from the specified byte array starting at offset
                off to this byte array output stream.*/
                System.out.println("read " + readNum + " bytes,");
            }
        } catch (IOException ex) {
            Logger.getLogger(ConvertImage.class.getName()).log(Level.SEVERE, null, ex);
        }
        byte[] bytes = bos.toByteArray();
        //bytes is the ByteArray we need
 
 
        /*
         * The second part shows how to convert byte array back to an image file 
         */
 
 
        //Before is how to change ByteArray back to Image
        ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
        Iterator<?> readers = ImageIO.getImageReadersByFormatName("jpg");
        //ImageIO is a class containing static convenience methods for locating ImageReaders
        //and ImageWriters, and performing simple encoding and decoding.
 
        ImageReader reader = (ImageReader) readers.next();
        Object source = bis; // File or InputStream, it seems file is OK
 
        ImageInputStream iis = ImageIO.createImageInputStream(source);
        //Returns an ImageInputStream that will take its input from the given Object
 
        reader.setInput(iis, true);
        ImageReadParam param = reader.getDefaultReadParam();
 
        Image image = reader.read(0, param);
        //got an image file
 
        BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
        //bufferedImage is the RenderedImage to be written
        Graphics2D g2 = bufferedImage.createGraphics();
        g2.drawImage(image, null, null);
        File imageFile = new File("C:\\newrose2.jpg");
        ImageIO.write(bufferedImage, "jpg", imageFile);
        //"jpg" is the format of the image
        //imageFile is the file to be written to.
 
        System.out.println(imageFile.getPath());
    }
}

Código alternativa 2:

Código: [Seleccionar]
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
 
 
public class SimpleConvertImage {
public static void main(String[] args) throws IOException{
String dirName="C:\\";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,"rose.jpg"));
ImageIO.write(img, "jpg", baos);
baos.flush();
 
String base64String=Base64.encode(baos.toByteArray());
baos.close();
 
byte[] bytearray = Base64.decode(base64String);
 
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));
ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));
}
}

Salu2

178
Buenas paramonso por favor, a la hora de poner título a los temas seguir las indicaciones que están en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Ejercicio bien resuelto

Salu2

179
Buenas paramonso

En el ejercicio 1 el código propuesto funciona, no obstante no es la forma más elegante de escribirlo

Código: [Seleccionar]
if (tecla=='='){var resultado = eval(nodoTextoPantalla.nodeValue);nodoTextoPantalla.nodeValue = resultado;}
else {nodoTextoPantalla.nodeValue = nodoTextoPantalla.nodeValue + tecla;}
if (tecla=="C"){nodoTextoPantalla.nodeValue = ' '; }

Si te fijas, en el caso de pulsarse C en primer lugar se ejecuta el else del primer if, y luego el segundo if. Estás ejecutando dos sentencias cuando solo te haría falta una como puede verse en https://www.aprenderaprogramar.com/foros/index.php?topic=2461.msg11750#msg11750

El ejercicio 2 funciona bien. En realidad bastaba con mostrar el sentido del movimiento

Puedes ver una solución en el mismo hilo que he puesto antes

Salu2

180
Buenas paramonso, como ya hemos comentado en otros hilos por favor para poner título a los temas en los foros sigue las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

En este ejercicio no solo has hecho lo que se pedía, sino mucho más (presentación en un cuadro, posibilidad de borrar, etc.).

En general se ve buen código y buen manejo de los conceptos. Las únicas sugerencias que te haría serían las siguientes:

- Dale nombres adecuados a las funciones. Por ejemplo la función cogerPalabra no tiene un nombre adecuado, porque el nombre de la función no describe lo que hace la función, el cometido principal de esta función no es coger una palabra.

- Divide en distintas funciones las distintas acciones a realizar. Por ejemplo si quieres adecuar  y dar estilos al cuadro, podrías hacer eso en una función dotarCuadroConEstilos(), otra función si es para pedir la palabra sería pedirPalabra, otra si fuera para extraer y mostrar las letras extraerYMostrarLetras(), etc. Las funciones a definir debe pensarlas cada programador.

Salu2

Páginas: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 91
Esto es un laboratorio de ideas...
Aprender a programar

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