Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Tonyskater

#1
Cita de: Orubatosu en 16 Junio 2017, 22:23 PM
Bueno, aunque resulta molesto, antes de correr hay que saber andar

Y si, al principio todo resulta aburrido, sosos y parecen tonterías. Pero o se conocen y se dominan perfectamente los fundamentos, o no se hace nada.

¿Que adaptar tal o cual algoritmo no te va a servir para nada? Lamento decirte que normalmente la mayoría de los programadores, no eligen lo que van a hacer. Les piden lo que quieren o les dan un algoritmo, y lo tienen que sacar

Tanto si les gusta y les parece interesante, como si no

Lo del HTML... bueno, sin algo que te conecte con bases de datos obviamente no podrás hacer mucho. Eso puede ser normalmente PHP, JavaEE o cualquier otra tecnología por el estilo acompañada de un servidor de bases de datos (generalmente MySql, Oracle, Sql Server...) y otras tecnologías.

Te recomendaría si te interesa el tema PHP o si has dado Java, JavaEE aunque lo cierto es que la mayoría de las implementaciones se hacen sobre PHP (no por ser mas o menos fácil, sino porque hay mas servidores que lo usan)

Y si te interesa el tema, aprende SQL, que hace falta y mucha, y no es dificil


Si, bueno en teoria el curso proximo daremos PHP, javascript, python, y aunque este año hemos hecho bastante SQL, PL/SQL, y tal, indagaremos más en la materia. Pinta interesante.

Aunque no es exactamente mi programación del curso, más o menos indica lo que se hace en este Ciclo, en mi centro de estudios, hablabamos de que hariamos más lenguajes de programación a parte de Java, como PHP, python etc en el curso siguiente.

#2
Cita de: 3n31ch en 16 Junio 2017, 18:16 PM
Antes de responder:
    • El titulo de la pregunta no es para nada descriptivo.
    • No creo que esto tenga que estar en Java



La idea de la universidad o instituciones de enseñanza no debería ser "enseñarte un lenguaje, o una herramienta" sino enseñarte la base para seguir por tu cuenta. Yo en la actualidad trabajo en una plataforma para controlar turbinas de agua por internet... nadie me enseño eso pero uso lo aprendido para aprender mas y desarrollar cosas mas complejas (Y esto no es lo mas difícil o raro que he hecho).

Lo que te pasa es que te falta experiencia, y esa experiencia la sacas trabajando o practicando. Perfectamente te puedes poner a hacer un carrito de compras por partes y afrontar tus dudas de apoco.

1. Creas el sitio web con imagenes y cosas estáticas
2. Le pones un poco de bases de datos y haces que los productos los tome de ahí
3. Creas los mantenedores y ahora no manipulas directamente la base de datos
4. Creas un login para acceder a los mantenedores
5. Pones un sistema de compras falso que al hacer click reduzca el stock
6. Agregas que al hacer click también cree un correo con una boleta falsa
7. Ya no reduces directamente al hacer click sino que creas un sistema que al hacer click los agregue al cache y creas otro botón que diga Comprar, en donde se descuente el stock de todo y envié el correo
8. Creas otro sistema para ver los historicos de compras anteriores
9. Le agregas mas datos del cliente, como para que se pueda registrar si quiere comprar
10. etc, etc etc...

Cada paso tiene su reto y seguramente si lo vez todo de golpe te marees porque no sabes manejarlo, pero poco a poco aprendes.

Ahora... es necesario que una institución te enseñe como hacer esto?

No!, caerías en la mediocridad si necesitaras que alguien te enseñara todo y mas si es informática en donde todo cambia cada tres segundos. Solo necesitas la base: Aprender la lógica de programación, entender como funcionan algunos protocolos, etc...

En particular yo adoro esos pequeños retos de programación como Fibonacci iterativo o recursivo, me ayudan a pasar el tiempo cuando estoy aburrido.

PD: Yo creo que muchos de este foro pasaron por la depresión existencial del informático (al menos así le llamo ya que fue bastante fuerte por mi parte... casi me jodí la vida)

Perdón estaba en duda de donde poner el post la verdad, gracias por moverlo y por contestar.
Entiendo lo que dices, y es verdad que es todo una base y no deberían enseñarnos a programar como monos amaestrados, sino motivarnos a ser creativos y ponernos en situaciones fuera de nuestra zona de confort para así aprender más y lo que aprendamos aplicarlo posteriormente.
Creo que sí, que seguiré estudiando esto, ya que programar me gusta mucho, y solo he visto la punta del iceberg dese lejos... Espero seguir compartiendo dudas y procurare a medida que vaya aprendiendo resolver dudas de otras personas.

Muchas gracias por todo.
#3
Cita de: NEBIRE en 16 Junio 2017, 14:48 PM
Vaya por delante que estoy de acuerdo, en que es muy probable que en la mayoría de sitios, el profesor marea mucho la perdiz y no va al grano, pero probablemente esto se deba a que los alumnos cada uno está a un nivel distinto y aporende a un ritmo diferente. Si fuera rápido, probablemente solo 4 ó 5 podrían seguir el ritmo, y el resto no aprendería nada. si va lento, quizás consiga que otros 20 salgan adelante, a costa de que aquellos 5 se aburran soberanamente.

Por eso creo que alguien que le interesa un tema, no debe conformarse con lo que aprende en la escuela, especialmente si considera tener capacidad para más... y debería por su cuenta avanzar lo que pueda....
Si, recuerdo el tema, porque yo te respondí al tema.
El caso es que ese ejercicio, por inútil que resulte en la vida, lo que pretende es enseñarte a pensar.
De hecho la programación se puede considerar dividida en 3 partes:
- Conocer la base de los lenguajes.
- Conocer un lenguaje en específico (o dos o tres), pero al menos uno a fondo.
- Ser capaz de hallar una solución a un problema (lo más eficazmente posible, dado el límite de los conocimientos que se posea).

---------------------------------------------------------
- Lo 1º se aprende probablemente en los 1-3 primeros años... saber a que se llama una función, método, por qué se llama propiedad a algo que evidentemente es lo mismo... como es el proceso de compilación, qué tipos de datos hay y cómo se pueden considerar, etc... Generalidades, pero todas, un amplio abanico de todo, pero sin profundizar en nada y sin llegara la especificación última de cada cosa y cada caso.

- El paso 2º es detallar todo lo anterior (solo lo que sea preciso) ciñéndose a un lenguaje específico. Aunque es normal (o sería lo razonable) que estudiando no se dé excesiva prepoderancia un lenguaje sobre otro, aunque lógicamente llega un momento de 'pisar el terreno' y por tanto debe tomarse uno para empezar a jhacer ejercicio (sin dejar que eso implique que ese es lo mejor ni perfecto, no dejarse influenciar, el mejor lenguaje es aquel al que mejor te adaptas (y resulta útil, obviamente)). Aquí en referencia a lo anterior, por ejemplo hablando de tipos de datos, se ve que no se acepta cualquiera y lo hace de una forma específica.... incluso el nomnbre de ese tipo de datos se llama muy diferente al modo en que se llame en otro lenguaje.

- En lo 3º, es la parte más difícil, y sucede como en las matemáticas, se intenta que los alumnos mediante ejercicios pueriles aprendan a usar su mente para resolver problemas. Pero esto en parte es algo innato en cada persona y en parte algo que se aprende. Igual que con las matemáticas, a unos se les da mejor y a otros peor. Al final, las dos partes previas son más de memoria, pero esta es la que define si tienes posibilidades de resolver problemas que 'nunca han estado en tu memoria'. Si eres capaz de enfrentarte a retor no tratados, no memorizados,

Es la diferencia entre saber como llegar desde Madrid a París (porque has memorizado un plano de carreteras) y como llegar desde el punto X al punto Y (Madrid y París), dadas sus cordenadas y orientándose con una brújula, el sol, las estrellas, etc... no cabe tanto espacio para resolverlo con memoria, requiere aplicar los conocimientos adquiridos.

Es normal que te aburras si tienes ganas de aprender. si quieres hacerlo más rápido estudia por tu cuenta aparte (si te sobra tiempo libre y tienes ganas, claro).


p.d.:
Una cosa que no es estudiar informática, es aprender x lenguaje al dedillo. Y espero que ninguna universidad cometiera tal error, eso son vertientes y con el tiempo hay preferencias por una vertiente y pasado el tiempo por otra.
Siendo estudios inespécificos (como las células madre), pueden materializarse luego en cualquier lenguaje... es decir la especialización en un lenguaje requiere por lo general estudios adicionales por parte del interesado.

Es también de bobos, pretender que en la escuela te enseñan todo-todo... simplemente porque es imposible...

Hola, gracias por dedicar tu tiempo a responder mis dudas.
Quería decir que sí,estoy de acuerdo con lo que dices de que el profesor debe ir a un ritmo al cual más personas avancen aunque sea un ritmo más lento.

Hablando de mí para justifcar un poco mi pregunta, sí he estudiado cada día en casa, sí, me he mirado otros lenguajes y he aprendido a hacer otras cosas que se salían de mi zona de confort solo para avanzar un poco en mis estudios, pero... No he llegado a nada profesional, con esto me refiero, sí se hacer páginas web muy bonitas y todo lo que tu quieras, pero... Dudo que ahora mismo supiera hacer un carro de la compra completo desde 0 para esta pagina web.
No sé aplicar mis programas simples en una web simple, no sé me siento como incompleto, claro porque no he acabado supongo, pero...  De que me sirve la serie de Fibonacci a la hora de hacer una web? Claro, es práctica para que veamos en profundidad arrays y operaciones, en fin para ganar experiencia programando, pero nada útil mas allá de lo que hace el programa.

Yo leo un código completo de un profesional y solo veo que conexiones entrantes y salientes a recursos que no conozco y hacen operaciones con ellos, apenas se ven "funciones para traducir el true a sí y el false a no", me explico? Espero que sí.

Gracias de nuevo.
Un saludo.
#4
Hola! Soy Tony, primero que nada gracias por la ayuda que he recibido en el foro.
Ahora bien, queria hablar sobre un tema que me tiene algo preocupado, o más que preocupado, expectante...

Empiezo por el principio, soy un estudiante de Desarrollo de Aplicaciones Web (DAW), un ciclo formativo que se imparte en España (Donde lo estoy estudiando actualmente).
El primer curso de este ciclo superior de 2 años, ha sido rápido, aburrido en algunos aspectos e interesante en otros.

Qué  quiero decir con ésto, básicamente este primer año nos hemos centrado en asentar las bases principales que todo desarollador debe tener en cuenta para crear un código decente, con esto me refiero a la indentación, creación de funciones para no tener el código hecho un barullo de ideas, etc.

Pero lo más lejos que hemos llegado es a trabajar con ficheros de texto, de forma muy "pobre" por decirlo mal y pronto, el ejercicio más complicado que he tenido de este estilo es uno que tuve que consultar en el foro para poder arreglar los fallos que tenía.(Hablo de mi anterior post que era de una duda de LeetSpeak).

Quería saber, porque la verdad no me hago una idea, de qué hace un programador ya formado en el día a día, dudo que sea traducir "HOLA ME LLAMO TONY" a "H0L4 M3 LL4M0 70NY", y si lo es.... Creo que me hago una idea de lo que NO quiero seguir estudiando... Porque sí, puedo haber tenido ejercicios complicados que me han costado 5 horas resovlerlos, pero no son el tipo de actividades que hace un programador en el día a día.
¿Qué tipo de "programas", "código", acaba uno aprendiendo a hacer y por qué es tan potente Java?

Gracias por vuestra atención, un saludo
#5
Cita de: NEBIRE en 24 Mayo 2017, 03:41 AM
No se rompe el ordenador por 'probarlo'...

Si, ese es el sitio exacto donde va.

Yo solo añadiría tras el "write", otro System.out.println(linea); así ves como era la línea a la entrada y tras la conversión... y ahí si observas error, corrige según veas que error arroja... después de todo, siempre cuando se está emepezando es buena práctiva añadir líneas de código extra a modo de debug, para ir probando no solo errores, si no incluso ideas nuevas...

p.d.: de haber sabido antes que era un ejercicio de clase, te lo hubiera dejado para que pensaras un poco más... pero creo sinceramente que lo hubieras hecho, en general la gente es perezosa y no se lo toma demasiado en serio, parece que tú sí...

Bueno cuando te gusta algo, aunque sea una obligación, no te cuesta nada ponerte, o por lo menos es mi caso...
Aunque lo has dicho bien "parece", creo que solo me tomo enserio las cosas que me interesan, programación es una de ellas, luego hay otras que ni intentándolo... Como puede ser Administración de sistemas, no digo que no lo saque, sino que me da igual que sea un 5 que un 10... No me gusta.

Por otro lado. tengo en clase el código final... a ver si mañana lo cojo y os lo subo para q veáis que tal ha ido. Gracias por la ayuda. ;-) ;-)
#6
Cita de: NEBIRE en 22 Mayo 2017, 22:43 PM
Nota que describo dos funciones traducir... hay sobrecarga...

Una traduce un texto, la otra traduce un fichero (y lo guarda en otro).
Pero si te produce confusión, puedes explicitar un nombre diferente para cada una:
TraducirFichero(...)
TraducirTexto(...)


Hola, gracias por responder, lo leí anoche pero no podía contestar.
En principio entiendo lo que me dices y creo que es una buena forma de hacerlo, gracias.
Pero ahora mismo no me preocupa la "fluidez" con que haga la operación ya que es un ejercicio simple de clase y no creo que mi profesor se vaya a poner a traducir libros de texto con mi programa.. O sí, pero no se lo recomiendo... :silbar:

He reducido el problema general a una duda simple, mi cerebro no procesa donde tengo que realizar las operaciones...

Tengo un ejemplo sencillo aislado:

Código (java) [Seleccionar]
public static void main(String[] args) {
        JFileChooser selector = new JFileChooser();
        selector.showOpenDialog(null);
        selector.setFileSelectionMode(JFileChooser.FILES_ONLY);
        if (selector.getSelectedFile() != null) {
            File fichero = selector.getSelectedFile();
            try {
                FileWriter salida = new FileWriter("C:\\Users\\Tony\\Documents\\NetBeansProjects\\AGonzalezJBalmes\\LeetSpeakResultado.txt");
                BufferedWriter bw = new BufferedWriter(salida);
                Scanner entrada = new Scanner(fichero);
                String linea = "";
                //Vamos a leer lo que contiene el fichero que hemos abierto...
                while (entrada.hasNextLine()) {
                    linea = entrada.nextLine();
                    System.out.println(linea);
//                    Mi teoria es que aqui van las operaciones, pero... Con que tengo que operar?
//                    quiero leer el fichero... Lo leo Linea a linea...
//                    y quiero procesar cada linea y escribirla en otro fichero traducida...
//                    hago esto:(Se que esta mal... pero es lo que no entiendo)
                    bw.write(linea.replace('O', '0').replace('I', '1').replace('Z', '2').replace('E', '3').replace('A', '4').replace('S', '5')
                            .replace('G', '6').replace('T', '7').replace('B', '8').replace('P', '9'));
                }
               
                entrada.close();
                salida.close();
            } catch (FileNotFoundException e) {
                System.out.println("Fichero no encontrado");
            } catch (NoSuchElementException e) {
                System.out.println("No es un formato correcto de archivo");
                System.out.println("Es esperaba un fichero de texto.");
            } catch (Exception e) {
                System.out.println("Se ha producido un error inseperado");
                System.out.println(e.toString());
            }
        } else {
            System.out.println("No se ha encontrado ningun archivo");
        }
    }


En los comentarios he situado las dudas...
Gracias de nuevo!
#7
Iba a modificar el post pero pasaban cosas raras con los caracteres prefiero "responderlo"
Este es un ejemplo de Ejecución

No, no crea el archivo, ni salta ningun error, el programa pasa de mi...
#8
Hola tengo una duda con un ejercicio que estoy haciendo de LeetSpeak, el enunciado es el siguiente:
a) Dado el siguiente archivo de texto traduce el LeetSpeak a letras.
b)Dado el siguiente archivo de texto traduce el siguiente texto a LeetSpeak

El archivo es una simple cadena de texto cualquiera.

Con la siguiente formula no deberia ser un problema traducirlos:

Lo cual en mi codigo es lo siguiente:
Código (java) [Seleccionar]
switch (LS) {
                    case 1:
                        while (input.hasNextLine()) {
                            frase = input.nextLine();
                            frase.replace('O', '0').replace('I', '1').replace('Z', '2').replace('E', '3').replace('A', '4')
                                    .replace('S', '5').replace('G', '6').replace('T', '7').replace('B', '8').replace('P', '9');
                            escribir(frase, 1);
                            System.out.println("Se ha formado el LeetSpeak");
                        }   break;
                    case 2:
                        while (input.hasNextLine()) {
                            frase = input.nextLine();
                            frase.replace('0', 'O').replace('1', 'I').replace('2', 'Z').replace('3', 'E').replace('4', 'A')
                                    .replace('5', 'S').replace('6', 'G').replace('7', 'T').replace('8', 'B').replace('9', 'P');
                            escribir(frase, 2);
                            System.out.println("Se ha traducido el LeetSpeak");
                        }   break;
                    default:
                        System.out.println("Introduce un valor valido.");
                        break;
                }

Esto funciona bien, ahora viene cuando explota mi cabeza...
En general este es mi
Código (java) [Seleccionar]
public class Escribir {

    public static void main(String[] args) {
        JFileChooser selector = new JFileChooser();
        selector.showOpenDialog(null);
        selector.setFileSelectionMode(JFileChooser.FILES_ONLY);
        if (selector.getSelectedFile() != null) {
            System.out.println("Has seleccionado el fichero: " + selector.getSelectedFile());
            File archivo = selector.getSelectedFile();
            try {
                FileReader entrada = new FileReader(archivo);
                BufferedReader BR = new BufferedReader(entrada);
                Scanner input = new Scanner(entrada);
                String frase = "";
                while (input.hasNextLine()) {
                    frase = input.nextLine();
                    System.out.println(frase);
                }
                //ESCRIBIR ✔✔
                int LS;
                System.out.println(
                        "¿Quieres un LeetSpeak de este archivo?[1] ");
                System.out.println(
                        "¿Quieres traducir este LeetSpeak?[2] ");
                System.out.print(
                        "Introduce opcion del menu [1|2]: ");
                Scanner menu = new Scanner(System.in);
                LS = menu.nextInt();
                switch (LS) {
                    case 1:
                        while (input.hasNextLine()) {
                            frase = input.nextLine();
                            frase.replace('O', '0').replace('I', '1').replace('Z', '2').replace('E', '3').replace('A', '4')
                                    .replace('S', '5').replace('G', '6').replace('T', '7').replace('B', '8').replace('P', '9');
                            escribir(frase, 1);
                            System.out.println("Se ha formado el LeetSpeak");
                        }   break;
                    case 2:
                        while (input.hasNextLine()) {
                            frase = input.nextLine();
                            frase.replace('0', 'O').replace('1', 'I').replace('2', 'Z').replace('3', 'E').replace('4', 'A')
                                    .replace('5', 'S').replace('6', 'G').replace('7', 'T').replace('8', 'B').replace('9', 'P');
                            escribir(frase, 2);
                            System.out.println("Se ha traducido el LeetSpeak");
                        }   break;
                    default:
                        System.out.println("Introduce un valor valido.");
                        break;
                }
                entrada.close();
            } catch (FileNotFoundException e) {
                System.out.println("Fichero no encontrado");
            } catch (NoSuchElementException e) {
                System.out.println("No es un formato correcto");
                System.out.println("Se esperaba un .txt");
            } catch (Exception e) {
                System.out.println("Se ha producido un error inesperado");
                System.out.println(e.toString());
            }
        } else {
            System.out.println("No se ha seleccionado ningun archivo.");
        }
    }


El tema es que no escribe nada, osea lee el archivo bien, lo muestra y cuando llega el momento eliges la opcion del menu que quieres y no crea el archivo traducido.

Esta es mi funcion escribir:
Código (java) [Seleccionar]
public static void escribir(String s, int n) {
        if (n == 1) {
            try {
                FileWriter salida = new FileWriter("C:\\Users\\Tony\\Documents\\NetBeansProjects\\AGonzalezJBalmes\\LeetSpeakResultado1.txt", true);
                for (int i = 0; i < s.length(); i++) {
                    salida.write(s.charAt(i));
                }
                salida.close();
            } catch (IOException ex) {
                Logger.getLogger(Escribir.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (n == 2) {
            try {
                FileWriter salida = new FileWriter("C:\\Users\\Tony\\Documents\\NetBeansProjects\\AGonzalezJBalmes\\LeetSpeakResultado2.txt", true);
                for (int i = 0; i < s.length(); i++) {
                    salida.write(s.charAt(i));
                }
                salida.close();
            } catch (IOException ex) {
                Logger.getLogger(Escribir.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

Acabo de empezar hace escasos días con ficheros y no me aclaro muy bien...

Gracias de antemano espero que me podáis ayudar.
#9
Cita de: 3n31ch en  3 Mayo 2017, 12:08 PM
Hola amigo, lo lamento mucho. No vi tu post hasta ahora.  :-(

Veras, tienes un problema logico grandote ahi. A ti no te interesa saber el nombre de las estaciones que estan en medio. Te interesa saber su indice.

Imaginemos que tienes 6 estaciones:

0 A (SUCURSAL)
1 B
2 C
3 D
4 E
5 F (SUCURSAL)


Los valores "posibles" son 1, 2, 3, 4.

Entonces lo que tienes que ver es si el numero ingresado esta mas cerca del 0 o del 5.

Si te ingresan un 3, sabes que para llegar al 0 hay 3 numeros (que cohincidente mente es igual al numero ingresado... y de hecho si ves con el 2 o con el 1... pasara lo mismo), y para llegar al 5 solo son 2 (que cohincidente mente es el resultado de 5-3).

Luego con un simple if discriminas cual es menor y cual es mayor.

Entonces repasando:
Largo_del_arreglo: 6;
Primera_estacion: 0;
Ultima_estacion: Largo_del_arreglo - 1

Valor_ingresado: 3
Cercania_Primera_estacion: Valor_ingresado;
Cercania_Ultima_estacion: Uiltima_estacion - Valor_ingresado;

SI Cercania_Primera_Estacion < Cercania_Ultima_Estacion:
   IMPRIMIR(Nombre_Primera_Estacion);
O SI NO SE CUMPLIO LA ANTERIOR Y Cercania_Ultima_Estacion < Cercania_Primera_Estacion
   IMPRIMIR(Nombre_Ultima_Estacion);
SI NO SE CUMPLIO NINGUNA DE LAS ANTERIORES
  IMPRIMIR("DA IGUAL, ESTAN IGUAL DE LEJOS, TE JODES");


Hola! Gracias por responder! No importa lo que tardes es simplemente que quiero aprender y mejorar lo que ya sé.

Entonces con esto entiendo que, para conocer que recorrido es menor tengo que operar con los valores que ya tengo; 0 y 5(sucursales), 1,2,3 y 4(Estaciones):

Si tengo que llegar a la estación 4 desde una de mis sucursales...

0+valor=Distancia desde 0;
5-valor=Distancia desde 5;
Si distancia desde 0<distancia desde 5{Devolvemos sucursal 0;}
sino si distancia desde 0>distancia desde 5{Devolvemos sucursal 5;}
si no se cumplen ninguna de las 2{Devolveríamos la cadena vacía;}

0+4=4;
5-4=1;
if(4<1){ //devuelve false por lo que no entra en esta condicion
    sout("Estacion 0");
}else if(4>1){
    sout("Estacion 5"); // devuelve true por lo q imprime estacion 5
}else{
   sout(""); // como ah entrado en la condicion anterior ha salido del condicional.
}


Vale, pues muchas gracias!
Hay alguna manera de valorar la contribución de cada usuario en el foro?
En plan darte una puntuación o algo así.
#10
Cita de: Tonyskater en  2 Mayo 2017, 17:22 PM
Con este codigo funciona, pero no es lo que busco, me gustaria hacerlo con un bucle para cualquier tipo de longitud del vector. Este solo funcionaria para este caso.
Código (java) [Seleccionar]
public static String estacion(String[] linia, String estacion) {
        String sucursal="";
            if(estacion.equals(linia[0])||estacion.equals(linia[1])||estacion.equals(linia[2])){
                sucursal="La Sagrera";
            }else if(estacion.equals(linia[3])||estacion.equals(linia[4])||estacion.equals(linia[5])){
                sucursal="Gorg";
            }else{
                sucursal="";
            }           
        return sucursal;
    }



Hola lo he entregado así al final, pero me gustaría saber como hacerlo de la otra manera.¿Es muy complicado? He estado mirando por el foro pero no he encontrado gran cosa.