• Martes 30 de Abril de 2024, 03:52

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

Páginas: 1 2 [3] 4 5
51
Retos / Re: Formato Bmp
« en: Jueves 13 de Julio de 2006, 15:01 »
Hola!!

Citar
Código: Text
  1.  
  2. ancho = (ancho + 3) & ~3; */ alineado en 4 bytes*/
  3.  

La deduccion no es tan sencilla...

Para verlo, trabajando en base 10 es mas facil.

Digamos que quieres hacer que un numero sea multiplo de 100. Tienes tres opciones para redondearlo:

a ) Por defecto: Lo que se haria es forzar los dos ultimos digitos a cero.
b ) Al mas proximo: Sumas la mitad de la precision que quieres dar, y fuerzas los dos ultimos digitos a cero. En este caso, se sumaria 50. Sabes que para los menores de 49 se te queda en la centena anterior (por que subes como mucho a 99), y el resto se te pasan a la siguiente centena. Esto se suele usar mucho en aritmetica de coma flotante...
c ) Por exceso: El usado aqui. Es similar al anterior, solo que en lugar de sumar 50 se sumarian 99. Asi haces que todos suban a la centena superior salvo en el caso de que ya sea multiplo de 100.

Pues lo mismo, pero en base 2 y buscando multiplos de 4. Sumas tres, y con el AND fuerzas que los dos ultimos bytes sean cero (not 3 == 0xFFFFFFFC).

Espero haberme explicado... Yo por lo menos fue asi como lo vi.

Saludos!!

52
Retos / Re: Formato Bmp
« en: Miércoles 12 de Julio de 2006, 19:45 »
Cita de: "JuanK"
oK , LA INFROMACION ESTA DEVUELTA.

Mi solucion, si mal no estoy es:

Código: Text
  1. ancho= (BMPwith * bytesPerPixel);
  2. ...
  3.  
  4. ancho+= ancho%4;
  5. bitsize = ancho * alto_imagen;
  6.  

Hola!!

La verdad es que creo que esta mal. La solucion seria:

Código: Text
  1.  
  2. if (ancho%4 != 0 ) ancho += (4 - ancho%4);
  3.  
  4.  

Por lo que no vale tu forma es por que si tengo una imagen de 5x5, ancho es 15, y ancho = 15 + 15%4 = 15 + 3 = 18, que sigue sin ser multiplo de 4.

La otra forma que postearon antes tambien era valida (es la que yo use en mi solucion). Lo que te hace es ahorrarte la comprobacion y calcular el modulo, es decir dos divisiones... La verdad que no es gran cosa por que esta operacion solo deberia de hacerse una vez en todo el codigo, pero menos es nada ;)

Un saludo!!

53
Retos / Re: Formato Bmp
« en: Miércoles 12 de Julio de 2006, 15:47 »
Uhm... La verdad que es casualidad, pero yo lo hacia igual...

54
Retos / Re: Formato Bmp
« en: Martes 11 de Julio de 2006, 17:23 »
Hola:

Yo ya casi lo tengo terminado. Solo me falta pulir un par de detalles y ya estara listo (creo).  :)

Una pregunta JuanK: la solucion la posteamos aqui directamente o te la enviamos por MP?  :blink:

Saludos  :hola:

55
Java / Re: Editar Jtable...
« en: Domingo 9 de Julio de 2006, 16:43 »
Hola:

No entiendo muy bien tu pregunta :blink:  , pero a lo mejor este link te sirve de algo:

How to use Tables

Un saludo.

56
Java / Re: J2me
« en: Domingo 9 de Julio de 2006, 16:11 »
Hola!!

Suponiendo que tf es una referencia al TextField:

Código: Text
  1.  
  2. int val = Integer.parseInt(tf.getText());
  3.  
  4.  

Vamos, igual que en J2SE...  <_<

Un saludo.  :hola:

57
Java / Re: Dificultades Con El Codigo
« en: Lunes 3 de Julio de 2006, 12:05 »
Uhm... He terminado de leer todo el codigo, y la duda  :alien:  que tengo es:

¿Que es total? ¿Que es bolsa? ¿Y por que no puedes guardar el valor y luego consultarlo si son variables de tu clase??

Si necesitas hacerlo desde dentro de tu clase, no hay problema; y si necesitas hacerlo desde fuera tampoco lo hay (haces un metodo llamado ConsultarBolsa() que te devuelva ese valor).

Si quieres mas ayuda tendras que ser mas concreto...

Un saludo  :hola:

58
Java / Re: Dificultades Con El Codigo
« en: Lunes 3 de Julio de 2006, 11:44 »
Hola!!

Se que no es lo que has preguntado, pero viendo tu codigo hay una cosa que lo hace parecer mas desordenado y mas ineficiente.

La cuestion es que cuando estas dentro de un menu (por ahora solo he sacado paciencia para ver el de clientes  -_- ) despues de cualquier opcion vuelves a llamar al mismo metodo de forma recursiva para volverlo a sacar. Esto es ineficiente por que lo que haces es ir llenando la pila de datos del mismo metodo de forma innecesaria.

La alternativa que te doy es:

public void MenuClientes(){
 int op = 0;
 do{
  // Codigo para mostrar las operaciones

  // Leer numero
  switch(op){
   case 1:
    // Codigo op 1
    break;
   case 2:
    // ...

   case 4:  // Salir del menu
    break;
   default:
    System.out.println("Operacion no valida.");
    break;
  }
  } while (op != 4);
}

De todas formas voy a seguir mirando tu codigo para ver si saco la duda que planteas. Saludos!!  :hola:

59
Java / Re: Duda Con Timer
« en: Domingo 2 de Julio de 2006, 22:16 »
Usa el operador modulo ( % ).

Por ejemplo:

static int secs = 0;
//....
public void muestra_puntos(){
 while (!listo){  // listo es la variable que controla si el trabajo esta listo o no.
  secs++;
  for (int i = 0; i < (secs%5) ; i++){
   // Mostrar un punto
  }
  sleep(1000); // Espera un segundo
 }
}

Saludos.

60
Java / Re: Problema Con Jscrollpane
« en: Lunes 26 de Junio de 2006, 19:47 »
Hola!!

La verdad es que yo nunca habia usado JScrollPane, pero para ver lo que me comentabas me he hecho un pequeño ejemplo y a mi la barra de scroll me sale bien.  :blink:

Como ha dicho jlsoriam, si puedes postear el codigo, mejor.  :)

Mi ejemplo es:

Código: Text
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4.  
  5. class TestScroll{
  6.  
  7.  JScrollPane sc;
  8.  JPanel pan;
  9.  JFrame f;
  10.  
  11.  public TestScroll(){
  12.   f = new JFrame(&#34;Prueba&#34;);
  13.   pan = new JPanel(new GridLayout(6,0,5,5));
  14.   sc = new JScrollPane(pan);
  15.  }
  16.  
  17.  public void init(){
  18.   for (int i = 0; i &#60; 200&#59; i++) pan.add(new Button(&#34;&#34;+i));
  19.  
  20.   f.add(sc, BorderLayout.CENTER);
  21.  
  22.   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  23.  
  24.   f.setSize(500, 500);
  25.   f.setVisible(true);  
  26.  }
  27.  
  28.  public static void main(String args[]){
  29.   TestScroll test = new TestScroll();
  30.   test.init();
  31.  }
  32. }
  33.  
  34.  


Y adjunto la salida que me da.

Saludos.  :hola:

61
Java / Re: Cola Pila Y Listas En Java
« en: Sábado 24 de Junio de 2006, 18:52 »
Uhm... Supongo que el JCreator es alguna especie de IDE, no??

Yo como IDE uso netbeans o eclipse si es para cosas grandes, y notepad si son cosas pequeñas.  :)

Siento no poder ayudarte.

Suerte!

62
Java / Re: Cola Pila Y Listas En Java
« en: Viernes 23 de Junio de 2006, 22:05 »
Una referencia es bastante similar a un puntero, salvo que en Java no te tienes que preocupar de la gestion de la memoria, ni tampoco existe la aritmetica de punteros como pasaba en C/C++.

Te posteo un ejemplo de una pila de enteros en Java:
Código: Text
  1.  
  2.  
  3. class Pila{
  4.  private class NodoPila{
  5.   public int elemento;
  6.   public NodoPila resto;
  7.  
  8.   public NodoPila(int e, NodoPila r){
  9.    elemento = e;
  10.    resto = r;
  11.   }
  12.  }
  13.  
  14.  private NodoPila top;
  15.  
  16.  private Pila(NodoPila np){
  17.   top = np;
  18.  }
  19.  
  20.  public static vacia(){
  21.   return new Pila(null);
  22.  }
  23.  
  24.  public boolean esVacia(){
  25.   return top == null;
  26.  }
  27.  
  28.  public void apilar(int e){
  29.   top = new NodoPila(e, top);
  30.  }
  31.  
  32.  public int desapilar() throws PilaVaciaException{
  33.   if (top == null) throw new PilaVaciaException();
  34.   int res = top.elemento;
  35.   top = top.resto;
  36.   return res;
  37.  }
  38. }
  39.  
  40. class PilaVaciaException extends Exception{}
  41.  
  42.  
  43.  

Si algo no esta claro, no dudes en preguntar.

Saludos!!  :hola:

63
Java / Re: Try......catch
« en: Jueves 22 de Junio de 2006, 22:35 »
En Java las excepciones se modelan como diferentes clases, todas ellas derivadas de la clase Throwable. Esta clase tiene varios metodos que te permiten obtener la informacion que pretendes mostrar, como son getMessage() o getStackTrace().

El último te devuelve un array de StackTraceElement, que te da informacion sobre el estado de la pila en el momento que se produjo la excepcion. El primer elemento corresponde al elemento superior de la pila, y contiene el ultimo metodo que se llamo antes de que se produjera la excepcion.

Un esquema de codigo que puedes usar seria:

Código: Text
  1.  
  2. try{
  3.  // Algo que pueda petar
  4. } catch (Exception e){
  5.  system.out.println(&#34;Error: &#34; + e.getMessage());
  6.  StackTraceElement[] ste = e.getStackTrace();
  7.  system.out.println(&#34;Linea: &#34; + ste[0].getLineNumber());
  8.  system.out.println(&#34;Metodo: &#34; + ste[0].getMethodName());
  9. }
  10.  
  11.  


Espero que te sea util. Saludos  :hola:

64
ADA / Re: Cronometro
« en: Jueves 22 de Junio de 2006, 21:24 »
Hola!!

Realmente no se muy bien lo que quieres hacer... Quieres un programa que muestre el tiempo transcurrido entre dos instantes de tiempo, o que se vaya actualizando cada x mostrando el tiempo desde el principio...

Para el primer caso ada.calendar te podria ser util por que almacenas las fechas de inicio y de fin, y luegos las restas. Para saber como usar el paquete ada.calendar puedes mirar la especificacion: ada.calendar

Para lo segundo quizas te tengas que meter ya con algun programita concurrente con varias tareas y un objeto protegido que se base en delay. Algo asi como:

while(sigue) do
 count := count + 1;
 delay(1);
end do;

Con un par de metodos para establecer la variable sigue, y obtener el contador para que otra tarea se encargue de mostrar el resultado con el formato adecuado. Tambien tendria que tener la entrada init() para poner en marcha el cronometro que seria donde estaria contenido este bucle.

Espero que te haya servido de algo.

Saludos!!  :hola:

65
Retos / Re: El Problema De Los Bloques
« en: Miércoles 21 de Junio de 2006, 14:03 »
Hola!!

Adjunto el dibujo que va siguiendo el ejemplo, a ver si asi es mas facil de entender. Los adjunto como enlaces por que no me coje las imagenes:

http://galeon.com/bronzegod/tbp1.jpg]Ejemplo (parte 1)[/URL]

http://galeon.com/bronzegod/tbp2.jpg]Ejemplo (parte 2)[/URL]

Saludos!

66
ADA / Re: Sos Necesito Ayuda Con Una Practica!!!
« en: Miércoles 27 de Julio de 2005, 07:30 »
Uhm... Si lo que te pasa es que no sabes jugar al ajedrez el porblema no es tan grande... Al ser para dos jugadores se elimina totalmente la componente de inteligencia artificial, lo que en el caso de ajedrez simplifica todo un monton. Solo necesitas saber mover las fichas...

Mira <aqui> y quizas te ayude...

Saludos :D

67
OpenGL / Color De Un Pixel
« en: Jueves 7 de Julio de 2005, 08:00 »
Hola!!

Mi pregunta es si hay alguna forma de poder obtener el colo que tiene un pixel en particular de la escena final.

Estoy haciendo un programa que trabaja con colores a nivel de pixel; para ponerlo es sencillo, por que simplemente creo un punto (GL_POINTS), establezco el color (glColor*()) y despues dibujo el punto (glVertex*()).

Para hacer lo contrario se me habia ocurrido llevar una matrix, con una posicion por cada pixel posible, pero como seria enorme mi duda es si hay alguna funcion de OpenGL que te lo de directamente (tipo el Graphics.GetColor() de Java).

Muchas gracias!!

68
C/C++ / Re: Ayuda Con Getchar()
« en: Sábado 2 de Julio de 2005, 14:16 »
Hola!! Realmente es algo raro, pero a mi tb me pasa. La explicacion podria estar en los juegos de caracteres usados por la  E/S de C y Windows. Te explico:

Si trasteas un poco mas con tus ejemplos, y rediriges la salida del que te saca los valores por pantalla a un fichero, veras que el resultado obtenido es el mismo que cuando lo sacas directamente por fichero. lo mismo pasa si aunque uses la llamada fprintf en lugar de llevarlo al fichero lo llevas a stdout(salida standard: pantalla) tb es igual que cuando usas fprintf a secas.

Mirando un poco por internet, se puede suponer que para las salida a perifericos se usa ASCII y para las de fichero se usa Unicode. Ambos tienen caracteres comunes hasta el 127, pero a partir del 128 son distintos.

La lectura si la haces desde fichero deberia de ser en Unicode, pero si lo sacas por pantalla sera en ASCII. Solucion : sacar tus resultados en otro ficheros llamada cuenta (o algo asi).

Te dejo referencias a ambos juegos para que los ojees:

UNICODE (128-255)

ASCII (128-255)

Salu2!!  :hola:

69
ADA / Re: Getch() En Ada???
« en: Sábado 2 de Julio de 2005, 11:46 »
Si con aplicacion win32 te refieres a esas con ventanitas bonitas  :) en lugar de esa horrorosa pantalla negra  :angry: , hay dos respuestas:

a) Respuesta corta:

Libreria grafica. Usa gtkada o Jewl. La segunda es bastante facil de usar. Con ella yo programe un sencillo visualizador de archivos ps.

b ) Respuesta no tan corta:

En realidad las aplicaciones que hagas son todas Win32, solo que hay que diferenciar entre modo texto y modo grafico.

Por defecto las librerias de E/S proporcionadas de manera standard por la mayoria de compiladores solo incluyen el modo texto, es decir, linea de comandos.

Para usar el modo grafico (ventanas y demas) suelen haber dos opciones: llamadas a la API del Sistema Operativo, o una libreria grafica que te las encapsule.

Esto tambien pasa en C, por ejemplo. Normalmente con stdio solo puede trabajar con linea de comandos, mientras que para sacar ventanitas y todo ese royo necesitas librerias tipo Allegro u OpenGL.

Enlaces:
 JEWL
 GtkADA


Sintiendolo mucho, ambas en ingles. Mira por Google a ver si encuentras algo en castellano.  :lightsabre:

Espero que te ayude.  :hola:

70
Retos / Re: Sistemas De Ecuaciones
« en: Martes 15 de Marzo de 2005, 11:21 »
Demostración del uso del método de Gauss-Jordan PARA CUALQUIER NUMERO DE ECUACIONES-INCÓGNITAS (salvo limitaciones de memoria impuestas por la maquina). La entrada es por teclado. Primero dos enteros: número de ecuaciones y número de incógnitas, y luego los coeficientes en orden (primero variables dependientes y luego termino independiente). Una vez se hayan acabado se siguen leyendo nuevos sistemas hasta que se encuentre un sistema nulo (0 ecuaciones - 0 incógnitas).

Ejemplo:

2x + 2y = 8
3x +z = 0

Seria: 2 3 2 2 0 8 3 0 1 0 0 0

(Los dos últimos ceros son el final de la entrada)

Lo he probado con un par de ejemplos y parece funcionar, aunque seguro que cierta persona lo prueba exhaustivamente hasta que falle y nos notifica el error, así que ya lo solucionare cuando pase...

Si se retoca un poco más podría mostrar también la solución paramétrica en el caso de que hayan infinitas soluciones (desde la forma Gauss-Jordan lo único que habría que hacer es identificar las columnas que funcionarán como parámetros: las que no son de primer elemento no nulo para ninguna fila).

Saludos!!

71
Retos / Re: El Problema De Los Bloques
« en: Miércoles 2 de Marzo de 2005, 10:40 »
RESPUESTA CORTA :  :huh:   :blink:


RESPUESTA NO TAN CORTA :
Consideraria aun mas elegante no responder, pero weno...

El paquete no standard no es STL, si no stack (si me quejo de las pilas, es stack == pila); aunque eso es lo de menos.

Sobre mi solucion... Realmente es muy similar a la tuya, solo que como implemento directamente las pilas, en lugar de usar memoria dinamica y listas enlazadas hago la reserva de memoria solo una vez en un vector de tamaño n y no uso punteros sino indexacion de posiciones; consiguiendo:

a) Menor tiempo de ejecucion (por que no hago apenas llamadas al Sistema Operativo => malloc y free)

B) Menor cantidad de memoria: En lugar de usar datos de tipo puntero para el enlace de los nodos, se usan shorts, que ocupan 2 bytes en lugar de 4.

Si posteas una solucion, y se que hay alguna mejor en algun aspecto, lo suyo seria postearla para que la gente la pueda ver. Si la tuya fuera mejor que la mia, no la pondria... O al menos el lo que yo pienso. "Cultura de foro" creo que lo llaman.

Y sobre lo ultimo.... simplemente dire que creo que esta fuera de lugar, sin compartir la impresion que da realmente el post en su conjunto.  &lt;_&lt; Si tienes una solucion mejor, posteala en el thread correspondiente, que NO es éste.

72
Retos / Re: Sistemas De Ecuaciones
« en: Martes 1 de Marzo de 2005, 11:23 »
A exacta creo que se refiere a que si el resultando no es un entero se muestre como fraccion.

Ademas, 2/2 = 1/1... si se da una fraccion lo suyo seria que se diera la de memor denominador posible.

Yo ahora no podre ponerme con ello, pero de todos modos una de Gauss-Jordan y una implementacion basica de fracciones y operaciones basica (suma, multiplicacion, reduccion a menor denominador y transformacion desde/a entero) seria suficiente. Todo con algo de memoria dinamica para resolver el tema de las dimensiones...

73
Retos / Re: El Problema De Los Bloques
« en: Martes 1 de Marzo de 2005, 11:16 »
Felicidades Carlos20!!  :smartass: Asi ya esta mejor :D

De todos modos usas un paquete no standard, y eso no suele estar permitido en este tipo de eventos, aunque al ser el de pilas lo pasamos por alto...  :whistling:

Aun tardare un poco en publicar mi solucion debido a una serie de problemas tecnicos con mi ordenador... De todos modos es dar unas pocas vueltas a la de Carlos para ahorrar un poco de memoria y tiempo.

Saludos  :hola:

74
C/C++ / Re: Ejecutar Ordenes En Ms-dos
« en: Jueves 24 de Febrero de 2005, 10:30 »
Creo que no lo puedes hacer directamente. Normalmente trabajas en modo texto. Para eso ya deberias de empezar a trabajar en modo grafico, con unas librerias graficas (o pasar a programar a bajo nivel).

Sobre como hacerlo... ahi no te puedo ayudar. Lo siento  :(

75
Retos / Re: El Problema De Los Bloques
« en: Jueves 24 de Febrero de 2005, 10:18 »
Carlos20... Tu programa da fallos en la salida. Te explico: la solucion obtenida es correcta, pero se te pide que la salida siga un formato muy especifico.

Citar
LA SALIDA:

La salida debera de consistir en el estado final del mundo de bloques. Cada posicion inicial del bloque i ( 0 <= i < n, donde n es el numero de bloques) debera aparecer seguida inmediatmente por dos puntos (':'). Si hay al menos un bloque en ella, los dos puntos deberan de estar seguidos por un espacio, seguido de la lista de bloques que estan apilados en esa posicion con cada numero de bloque separado del resto por un espacio. No poner espacios sobrantes al final de la linea.

Tu salida (pongo '|' al final de cada linea):

Código: Text
  1. 0 : 0 |
  2. 1 : 1 9 2 4 |
  3. 2 : |
  4. 3 : 3 |
  5. 4 : |
  6. 5 : 5 8 7 6 |
  7. 6 : |
  8. 7 : |
  9. 8 : |
  10. 9 : |
  11.  
  12.  

Sobre el codigo... esta en C++, y no se porgramar  :( , aunque se entiende bastante bien   :lol:  De todas formas, echandole un vistazo me parece que haces lo mismo que MutenRo. Usas pilas acotadas reservando en tiempo de compilacion el tamaño máximo, y haces busquedas exhaustivas de los bloques. Considero ambas soluciones correctas, pero no válidas.

¿¿Por que os da tanto miedo la memoria dinámica??  :scream:

Lo mismo que le dije a MutenRo. Suerte   B)

Páginas: 1 2 [3] 4 5