Foro de elhacker.net

Programación => Java => Mensaje iniciado por: mapers en 20 Septiembre 2010, 07:31 am



Título: grafica de Quicksort
Publicado por: mapers en 20 Septiembre 2010, 07:31 am
porque me imprime el grafico  dos veces ....................................si no llamo a paint dos veces...............

Código
  1. import java.awt.*;
  2. import javax.swing.*;
  3.  
  4. public class LinesRectsOvals extends JFrame {
  5.  
  6.  
  7.   public LinesRectsOvals()
  8.   {
  9.      super( "GRAFICO" );
  10.  
  11.      setSize( 500,500 );
  12.      setVisible( true );
  13.   }
  14.  
  15.   public void stop(int tiempo) {
  16.  
  17. try{Thread.sleep(tiempo);}catch(Exception err){}
  18.  
  19. }
  20.  
  21.  
  22.  
  23.   public  static void Quicksort(int A[], int b, int t)
  24.  
  25. {
  26.     int pivote;
  27.     if(b < t){
  28.        pivote=colocar(A, b, t);
  29.        Quicksort(A, b, pivote-1);
  30.        Quicksort(A, pivote+1, t);
  31.     }
  32. }
  33.  
  34.  
  35.  public static int colocar(int A[], int b, int t)
  36. {
  37.    int i;
  38.    int pivote, valor_pivote;
  39.    int temp;
  40.  
  41.    pivote = b;
  42.    valor_pivote = A[pivote];
  43.    for (i=b+1; i<=t; i++){
  44.        if (A[i] > valor_pivote){
  45.                 pivote++;
  46.                temp=A[i];
  47.                A[i]=A[pivote];
  48.                A[pivote]=temp;
  49.  
  50.        }
  51.    }
  52.    temp=A[b];
  53.    A[b]=A[pivote];
  54.    A[pivote]=temp;
  55.    return (int) pivote;
  56. }
  57.  
  58.  
  59.  
  60.  
  61.  
  62.   public void paint( Graphics g )
  63.   {
  64.       int A[]=new int[470];
  65.       int p=0,q=469;
  66.      super.paint( g );
  67.      g.setColor( Color.RED );
  68.      g.drawLine(30,0,30,470);
  69.       g.drawLine(30,470,500,470);
  70.       for(int y=0;y<469;y++)
  71.      {stop(50);
  72.         int valor = 1 + ( int ) ( Math.random() *469 );
  73.         A[y]=valor;
  74.      g.setColor( Color.RED );
  75.      g.drawLine(30+y,470,30+y,valor);
  76.      System.out.print (" Arreglo Desordenado "+"<"+A[y]+">");
  77.            System.out.print ("\n");
  78.      }
  79.  
  80.       g.setColor(java.awt.Color.white);
  81.    g.fillRect(0,0,500,500);
  82.    g.setColor(java.awt.Color.black);
  83.        Quicksort(A,p,q);
  84.       for(int x=0;x<469;x++)
  85.      {stop(50);
  86.  
  87.      g.setColor( Color.RED );
  88.      g.drawLine(30+x,470,30+x,A[x]);
  89.      System.out.print (" Arreglo Ordenado "+"<"+A[x]+">");
  90.            System.out.print ("\n");
  91.      }
  92.  
  93.   }
  94.   public static void main( String args[] )
  95.   {
  96.      LinesRectsOvals application = new LinesRectsOvals();
  97.      application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  98.   }
  99.  
  100. }
  101.  
  102.  



Título: Re: grafica de Quicksort
Publicado por: 1mpuls0 en 20 Septiembre 2010, 14:07 pm
porque me imprime el grafico  dos veces ....................................si no llamo a paint dos veces...............

 :¬¬ Si no lo llamas ni una vez, sabes para que es elmetodo paint?, es como el constructor de una clase normal de Java,  :-\ este código lo hiciste tu mismo o lo bajaste :S porque has preguntado cosas un poco fáciles de distinguir en donde esta el error.
Compilé tu código y no veo ningun fallo, la primera vez que aparecen los graficos es porque el programa señala numeros desordenados, la segunda vez los muestra ordenados  :¬¬

Un saludo.


Título: Re: grafica de Quicksort
Publicado por: mapers en 20 Septiembre 2010, 17:32 pm
si yo mismo lo hize solo que  muestra dos veces para los desordenados y dos veces para ordenados.....solo deberia mostrarese una ves por cada caso...............


Título: Re: grafica de Quicksort
Publicado por: 1mpuls0 en 20 Septiembre 2010, 19:31 pm
A mi me lo muestra bien xD, trata cambiando las dimensiones del JFrame (ancho) o trata de usar el metodo

Código
  1. repaint();

No se me ocurre nada mas  :-\