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 - Alex Rodríguez

Páginas: 1 ... 61 62 63 64 65 [66] 67 68 69 70 71 ... 93
1301
Hay varias formas de hacerlo, una idea puede ser la siguiente:

Timer timer = new Timer ();
TimerTask tareaAEjecutarCadaHora = new TimerTask () {
    @Override
    public void run () {
        // Aquí el código a ejecutar cada hora. Incluye un if para comprobar si la hora está comprendida en el intervalo entre las 10 y las 18, de modo que sólo se ejecute si se cumple ese criterio
    }
};

// Programa que la tarea se ejecute cada hora...
timer.schedule (tareaAEjecutarCadaHora, 0l, 1000*60*60);


1302
Gracias por compartir el código.

Para quien vea el código y quiera interpretar lo que hace, hace lo siguiente:

Crea un array denominado bucket de dimensiones aleatoriamente grandes (por ejemplo con 100 elementos). Toma un array a ordenar, por ejemplo array = {4, 6, 12, 7, 20, 5}

En el array bucket marca con un 1 las posiciones que se corresponden con valores en el array a ordenar. Por ejemplo bucket[4]=1, bucket[6]=1, bucket[12]=1, bucket[7]=1, bucket [20]=1, bucket[5] = 1

En este momento ya tenemos una ordenación sobre bucket, basada en los índices marcados, ya que lo anterior es lo mismo que bucket[4]=1, bucket[5] = 1, bucket[6]=1, bucket[7]=1, bucket[12]=1, bucket [20]=1

Finalmente partimos de la última posición válida de array y en un bucle vamos recorriendo todas las posiciones de bucket (desde 0 hasta 99 por ejemplo) y cuando encontramos un 1, asignamos a array el índice de bucket.

Por ejemplo:

indiceParaArray = 5

bucket[0]=0
bucket[1]=0
bucket[2]=0
bucket[3]=0
bucket[4]=1  -- > ahora array[5] = 4 y próximo indiceParaArray = 4
bucket[5]=1  -- > ahora array[4] = 5 y próximo indiceParaArray = 3
bucket[6]=1  -- > ahora array[3] = 6 y próximo indiceParaArray = 2
bucket[7]=1  -- > ahora array[2] = 7 y próximo indiceParaArray = 1
bucket[8]=0
bucket[9]=0
bucket[10]=0
bucket[11]=0
bucket[12]=1  --> ahora array[1]= 12 y próximo indiceParaArray = 0
bucket[13]=0
...
bucket[20]=1 -- > ahora array[0] = 20 y próximo indiceParaArray = -1
bucket[21]=0
...
así llegamos a bucket[99]=0 y el proceso termina

El array ha quedado ordenado: array = {4, 5, 6, 7, 12, 20}
   



En el código planteado, el doble bucle for no es necesario, ya que el for interno lo único que hace es dar pie a una ejecución del código interno si bucket [ i ] es igual a 1 (condición para entrar en el bucle), por tanto sería más claro escribirlo como:

        for (int i = 0; i < bucket.length; i++) {
            if (bucket[ i ]==1){
                a[outPos--] = i;
            }
        }


Este método parece que tiene una complejidad buena en tiempo, O(n) con n = tamaño del bucket (que hemos de recorrer una vez para rellenarlo de ceros, y otra vez para encontrar los elementos marcados). Sin embargo, es ineficiente al usar un bucket de un tamaño aleatoriamente grande, y además no resultaría útil cuando entre los números a ordenar haya números aleatorios. Los números a ordenar tendrían que estar acotados dentro del tamaño del bucket.

En resumen, es un método curioso pero no puede considerarse un buen método de ordenación para casos generales.

Saludos,



CÓDIGO PRESCINDIENDO DEL DOBLE BUCLE

Código: [Seleccionar]
import java.util.*;
public class Vector_Sort {

    public static void sortMayorMenor(int[] a, int maxVal) {
        int[] bucket = new int[maxVal + 1];
        for (int i = 0; i < bucket.length; i++) {
            bucket[i] = 0;
        }

        for (int i = 0; i < a.length; i++) {
            bucket[a[i]]++;
        }

        int outPos = a.length - 1;
        for (int i = 0; i < bucket.length; i++) {
            if (bucket[i]==1){
                a[outPos--] = i;
            }
        }
    }

    public static void main(String[] args) {

        int[] vector = {4, 6, 12, 7, 20, 5};
        int maxVal = 100; //puede ser el valor que ustedes convenga
        System.out.println("Antes: " + Arrays.toString(vector));
        sortMayorMenor(vector, maxVal);
        System.out.println("Despues:  " + Arrays.toString(vector));
    }
}

1303
Hola, indica cuál es la referencia o el enunciado del ejercicio, para saber exactamente a qué nos estamos refiriendo. Pega también el código que tengas desarrollado hasta el momento (ver las indicaciones de https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0)

Saludos

1304
Hola, veo que solo has incluido el método sortMayorMenor ¿puedes poner el código completo para así poder compilarlo? Saludos

1305
Hola, léete esto: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Indica cuál es el enunciado del problema (¿en qué consiste el bucket sort?) y pega el código que tengas desarrollado hasta el momento y en qué parte en concreto es en la que obtienes un error o tienes problemas, para de esa forma poder ayudarte.

Saludos.

1306
Aquí tienes un código con el que puedes resolver el problema concreto que planteaste (o eso creo):

Código: [Seleccionar]
import java.util.Random;

public class PruebaMatriz{

    public static int[][] matriz;

    public void CreacionMatriz(){
        matriz=new int[3][3];
        matriz[0][0]=1;
        Random numAleatorio;
        numAleatorio = new Random ();
        matriz[0][1] = numAleatorio.nextInt(2)+1;   
        matriz[0][2] = 3;
        matriz[1][0] = numAleatorio.nextInt(2)+2;
        matriz[1][1] = 2;
        matriz[1][2]= 1;
        matriz[2][0] = numAleatorio.nextInt(2)+1;
        matriz[2][1] = numAleatorio.nextInt(3)+1;
        matriz[2][2] = 3;
    }

    public int[][] getMatriz() {return this.matriz;}

    public void imprimirMatriz(int[][] matriz){
        for (int k=0;k<matriz.length;k++){
            for (int f=0;f<matriz.length;f++){
                System.out.print(matriz[k][f]+" ");
            }
            System.out.println();
        }
    }

    public static void main(String []args){

        System.out.println("Ejemplos ");
        for (int i=0; i<10; i++){
            PruebaMatriz form=new PruebaMatriz();
            form.CreacionMatriz();
            form.imprimirMatriz(form.getMatriz());
            System.out.println("");
            System.out.println("********************************");
            System.out.println("");
        }
    }
}

1307
Hola, léete esto: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Y para poder ayudarte, pega por favor el código que tengas elaborado (todas las clases) hasta donde hayas llegado, e indica exactamente en referencia al código dónde no puedes avanzar. Viendo el código es como más fácil será ayudar. Saludos.

1308
Hola, recogemos tu recomendación y la tendremos en cuenta... Normalmente nos tomamos un tiempo para madurar las ideas y valorar los pros y los contras (también el trabajo que puede suponer). Como anécdota te puedo contar que los cursos inicialmente no tenían las opciones "Siguiente" y "Anterior", y que fue gracias a una sugerencia a través de los foros que se introdujo esta posibilidad (que resulta muy útil). Así que agradecemos todas las sugerencias, y todas son discutidas y tenidas en cuenta, aunque algunas lleguen a convertirse en realidad y otras no. Saludos...

1309
Si simplemente quieres crear una matriz 3x3 donde los números que pueden aparecer sean los indicados sí es fácil de hacer (simplemente codificar que aleatoriamente aparezca uno de los números posibles en la posición correspondiente). Pero si no tienes una lógica, ¿cómo crearías una matriz de 4x4 ó de 5x5 ó de 6x6...?

Aquí tienes una referencia de aleatoriedad en Java: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=638:generar-numeros-aleatorios-en-java-clase-random-y-metodo-nextint-ejercicio-ejemplo-resuelto-cu00672b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Saludos

1310
He visto los ejemplos, lo que no entiendo es cuál es la lógica de los números.

¿De dónde salen los números?, es decir, ¿cuáles son las condiciones para que esos números valgan y no valgan otros? Por ejemplo donde pones 2/3 por qué vale 2 ó 3 pero no vale 1/3 ¿?

1  1/2  3
2/3  2  1
1/2  1/3  3

1311
Pon un ejemplo con números para entender qué es lo que quieres hacer (por ejemplo un caso de matriz que fuera correcta y otro de matriz incorrecta, y cuándo es correcta por qué lo es y cuando es incorrecta por qué no lo es). A primera vista, el stackoverflow parece que se produce porque tienes una llamada recursiva no controlada, pero hay que saber exactamente qué es lo que quieres plantear...  ::)

1313
Posiblemente tengas algún proceso mal planteado y eso te lleva al stackoverflow. Para comprobarlo, pega el código.

Léete esto: https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Si estás empezando con Java te recomiendo el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

1314
Hola, pega por favor el código... de esa manera ayudas a otros compañeros que quieran hacer algo parecido. Saludos  ;)

1315
He perdido el código, no lo había guardado...  ???

1316
He cambiado rutas de directorios y he compilado, pero no veo que salga ningún error, de hecho no hace nada, ni muestra nada... tendré que mirarlo con calma  ???

1317
Pega el código completo para poder compilarlo y revisarlo  ::)

1318
Hola, aquí te he dejado ejemplos de código que creo te pueden ayudar para plantear la solución del problema: https://www.aprenderaprogramar.com/foros/index.php?topic=1636.0

Saludos

1319
Aquí dejo ejemplos de código Java.

Para listar todos los archivos existentes en un directorio o carpeta:

Código: [Seleccionar]
import java.io.File;

public class ListFiles {

    public static void main(String[] args)     {

        // Aquí la carpeta donde queremos buscar
        String path = "C:/";

        String files;
        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++)         {

            if (listOfFiles[i].isFile())             {
                files = listOfFiles[i].getName();
                System.out.println(files);
            }
        }
    }
}



Para listar sólo los archivos de un tipo (por ejemplo sólo los txt):

Código: [Seleccionar]
import java.io.File;

public class ListFilesTxt {

    public static void main(String[] args)
    {

        // Aquí la carpeta que queremos explorar
        String path = "C:/";

        String files;
        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++)
        {

            if (listOfFiles[i].isFile())
            {
                files = listOfFiles[i].getName();
                if (files.endsWith(".txt") || files.endsWith(".TXT"))
                {
                    System.out.println(files);
                }
            }
        }
        System.out.println("Fin");
    }
}

1320
En principio basta con usar el método sort:

DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Ascending)

Donde DataGridView1.Columns(1) es la columna que quieres ordenar

ListSortDirection.Ascending indica si la quieres ordenar ascendente o descendente

Saludos

Páginas: 1 ... 61 62 63 64 65 [66] 67 68 69 70 71 ... 93

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

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