elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
201  Programación / Java / Re: Impementar un metodo ordenar!!! en: 28 Junio 2011, 17:20 pm
Sí, lo cierto y verdad es que el código está algo mal. Por ejemplo el método escribirPila2 no se que utilidad podrías darle, ya que cada pila tiene su propio método imprimir  :-\

Por otro lado el método combinar tienes varios fallos:

Código
  1. public void combinar(TADPila p1,TADPila p2)
  2. {
  3.        int f,t
  4.        for(int i=TOPE; i>0;i--){
  5.                System.out.println(   f= p1.desapilar());
  6.                System.out.println(   t= p2.desapilar());
  7.                if(f<t)
  8.                     p1.apilar(t);
  9.                 else if(t>t)
  10.                     p1.apilar(t);
  11.  
  12.                  System.out.println(p1);
  13.        }
  14. }

Por un lado estás suponiendo que P1 y P2 van a tener el mismo TOPE que la pila con la que realizas la llamada, cosa que no es ni por asomo segura.

Yo lo que haría sería pasar tan solo un argumento, y combinar la pila con la que se realiza la llamada al método, y la pila que se pasa como parámetro. Dentro del método tendría que construir una nueva pila vacía, e ir llenandola con los elementos correspondientes, podría ser algo así:

Código
  1. public TADPila combinar(TADPila p1){
  2.        TADPila resul = new TADPila();
  3.        while(!p1.pilaVacia() && !pilaVacia()){
  4.                int a, b;
  5.                a = p1.desapilar();
  6.                b = desapilar();
  7.                if(a<b){
  8.                        resul.apilar(a);
  9.                        apilar(b);
  10.                }
  11.                else if(a>=b){
  12.                        resul.apilar(b);
  13.                        p1.apilar(a);
  14.                }
  15.        }
  16.        //Aquí tendrías que comprobar si se han sacado todos los elementos de las dos pilas, si no, quedará alguna con elementos, los metes de golpe y ya está.
  17. }

El método que te he puesto supone que la insercción de los elementos en cada pila se ha hecho en orden, es decir, antes de llamar al método combinar se han insertado elementos en ambas pilas y se ha hecho de forma ordenada (ascendente). Si no habría que hacerlo de otra forma.

Saludos.
202  Programación / Java / Re: Duda sobre codigo para centrar ventanas en: 28 Junio 2011, 17:00 pm
Por si te sirve:

Yo estuve buscando por internet y encontré esto:

Código
  1. pack();
  2. java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
  3. setSize(new java.awt.Dimension(X, Y));
  4. setLocation((screenSize.width - X) / 2, (screenSize.height - Y) / 2);
  5.  

y a mi, haciendo un JDialog me ha funcionado perfectamente. He colocado X e Y por dejarlo de una forma un poco más general y que se vea mejor a simple vista que es lo que hace.

Espero que te sea de ayuda.

Saludos.
203  Programación / Java / Re: acceso a distintos metodos sobrescritos en: 28 Junio 2011, 16:52 pm
La forma más evidente:

Código
  1. A prueba = new A();
  2. prueba.imprimeA("PRUEBA");
  3.  

xD. Otra forma, sin cambiar el código, no se me ocurre ninguna la verdad. Y eso de que java los recorre de abajo arriba...mejor dicho sería decir: java ejecuta los métodos por ligadura dinámica, sin embargo, los métodos los hace por la parte estática. (sí la memoria no me falla).

Saludos.
204  Programación / Java / Re: ayudaaa en: 27 Junio 2011, 14:24 pm
El 2º ejercicio es sencillo, o eso parece.

El código podría ser el siguiente:

Código
  1. //Calcula la suma de los primeros 20 terminos de la serie 7*3, 8*3, 9*3...
  2. public static void main(String[] args) {
  3. int[] matriz = new int[20];
  4. int suma = 7*3;
  5. matriz[0] = suma;
  6. for(int i = 1; i<20;i++){
  7. matriz[i] = matriz[i-1] + 3;
  8. suma += matriz[i];
  9. }
  10. System.out.println("El resultado es: " + suma);
  11. }

Espero que te sirva. El primero o te explicas mejor o...nada de nada.

Saludos.
205  Programación / Programación General / Re: Ejercicio de Universidad.. en: 26 Junio 2011, 05:38 am
La cosa sería usar backtracking o (creo que también valdría) ramificación y poda. En cualquier caso lo importante es recorrer el menor número de nodos del árbol de soluciones, para que así, el programa tarde el menor tiempo posible. Como dicen los demás, busca por Google algunos apuntes y a darle a la melondra xD. Saludos y suerte.

206  Programación / Java / Re: [Threads] wait() y notify() en: 23 Junio 2011, 02:47 am
No he probado eso que dices de ponerlo a public y mostrarlo así, pero vamos, eso es una tontería porque si quieres acceder a algún atributo de la clase, declaras su método get y punto. Además, es lógico que falle porque cuando intentas acceder a un atributo de clase directamente se hace por su parte estática y no dinámica, y evidentemente la clase Thread no tiene un atributo llamado identificador. Asíais si lo que quieres hacer es poner atributos a public esta forma fallaría, pero vamos, en el 99,9% de los casos se recomienda declaralos privare.

Además, todo lo que he intentado explicaste ha sido lo que he aprendido en una asignatura de programación concurrente y distribuida, azoque puedo asegurarte que esta bien.

Saludos
207  Programación / Java / Re: [Threads] wait() y notify() en: 22 Junio 2011, 14:10 pm
De partida no es lo mismo agregar un nombre a un Thread que una variable identificadora o un contador o un valor booleano, etc... si vas a responder mi ultima pregunta te lo agradecere, pero lo que dices no tiene absolutamente nada que ver, y el codigo que pusiste si suelta error en tiempo de ejecucion por que no existe tal variable en la clase Thread, aunke pensandolo nisikiera es necesario hacer ese cast... y no me mandes a leer tutoriales por algo tan basico como pasar un argumento a la superclase, si no viste estoi preguntando otra cosa...

Saludos  ;)

Vamos a ver, porque no estamos confundiendo. Si pongo este código en vez del anterior (el cual también compila y funciona perfectamente):

Código
  1. public class HiloSumador extends Thread {
  2.  
  3. private String identificador;
  4. private int cantidad;
  5.  
  6. public HiloSumador(String id) {
  7. super(id);
  8. identificador = id;
  9. cantidad = 0;
  10. }
  11.  
  12. public void run() {
  13. for (int i = 0; i < 20; i++)
  14. cantidad++;
  15. System.out.println("La suma es: " + cantidad);
  16. System.out.println(identificador);
  17. System.out.println(getName());
  18. }
  19.  
  20. public static void main(String[] args) {
  21. Thread hilo1 = new HiloSumador("Hilo1");
  22. hilo1.start();
  23. }
  24.  
  25. }
  26.  

La salida por pantalla es:

Código:
La suma es: 20
Hilo1
Hilo1

Así que es lo mismo ponerle el nombre, que añadir una variable llamada "identificador" para llamar al hilo de alguna forma. ¿Qué no existe la variable y suelta error en tiempo de ejecución? Te vuelvo a decir que mires más cosas de Java, ¿como no va a existir una variable que te declaras como atributo de tu clase? Existen las dos, identificador y cantidad, porque las he declarado. Aunque haya herencia, yo estoy añadiendo los atributos que yo necesito para que mi hilo funcione. Así que no entiendo de donde te has sacado que falla en tiempo de ejecución por un lado, y que no existe esa variable por otro.

No se a que te refieres con eso de cast, si te refieres a "casting" yo no veo ninguno en el código así que...será otra cosa a lo que te refieres.

Por último ya te he respondido a tu pregunta:
Heredando en runnable de Thread e implementando Runnable, hay otra forma?

Se puede hacer como te he mostrado en este código y en el anterior (que es la misma forma). No tiene sentido (y que me corrijan por favor si me equivoco alguien que lea esto) heredar de Thread, e implementar la interfaz Runnable, ya que si te vas y miras un poco la documentación de Thread: http://download.oracle.com/javase/6/docs/api/java/lang/Thread.html verás que pone "All implemented interfaces: Runnable".

Siendo más sencillo, a tu pregunta respondo: Sí, se puede hacer de dos formas. Heredando de Thread e implmentando el método run(). O implementando la interfaz Runnable e implementando el método Run.

Saludos  ;)
208  Programación / Java / Re: [Threads] wait() y notify() en: 22 Junio 2011, 03:19 am
A ver, antes de ponerte a trastear hilos en Java creo que sería bastante conveniente que leyeses sobre Java. Para el caso, herencia, que pasa con los atributos que se heredan, si se pueden añadir atributos, si se pueden redefinir los métodos, etc...hay muchísimas cosas y muuuuuuuuy interesantes sobre la herencia de Java, así que te recomiendo la lectura ;)

El ejemplo que te puse no se si compila, pero vamos el código en si es correcto. Tu heredas de la clase Thread, declaras todos los atributos que quieras, los inicializas, implementas el método run() y listo, ya tienes tu thread preparado para ejecutar.

Echando un vistazo ahora a los manuales de la clase Thread, en el ejemplo que yo te puse no sería necesario declarar un atributo String identificador, ya que por lo que veo existe un constructor de la clase Thread que le pasas un String  y ese es el nombre del thread (que viene a ser lo mismo, si no me equivoco, que el identificador que yo declaraba). Por tanto realizando al principio del constructor de la clase ejemplo que hice esta llamada: super("Hilo1"); bastaría.

Yo ya te digo, esta forma la veo la más sencilla, es la que he aprendido (a parte de implementar la interfaz Runnable, crear objetos de la clase que implementa la interfaz y crear objetos de tipo Thread pasandole como argumento al constructor el objeto anterior) y la veo bastante más intuitiva, pero...cada cual lo hace como quiere.

Saludos.
209  Programación / Programación General / Re: Buscar en un fichero cadenas de caracteres y reemplazarlas en otro. en: 21 Junio 2011, 22:54 pm
El programa en cuestión es este:

Sustitución de cadenas en Java.

El programa selecciona dos ficheros, el fichero de origen debe tener las cadenas (en el caso, nombres) una por linea. También se puede usar para leer expresiones regulares y buscar en ficheros de texto. La verdad que eso sería bastante útil. Así que si alguien lo lee y le interesa que le ataque.

Cuando lee una linea del fichero de origen busca si casa con alguna cadena en el fichero destino. Si casa podemos reemplazar esa cadena por la que le indiquemos, y además podemos sustituir todas las coincidencias de una sola vez marcando la casilla del diálogo principal "Todos".

El resultado se guarda en un nuevo fichero llamado nombreFicheroDestinoREPLACE.txt.

El programa, evidentemente, tiene fallos, así que si alguien desea comentar algo, algo que ha visto que no le gusta y demás, que lo comunique y encantado.

Saludos.
210  Programación / Programación General / Re: Buscar en un fichero cadenas de caracteres y reemplazarlas en otro. en: 21 Junio 2011, 02:55 am
Tengo un programa que te puede servir, te he enviado un privado, si todavía te interesa responde y lo posteo por aquí.

Saludos.
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines