Fecha y hora actual: Jue 09 Sep, 2010 20:03 pm
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Ayuda con arreglos

Responder al Tema

Índice del Foro > Java > Ayuda con arreglos

Autor Mensaje
sagdec



Registrado: 08 Jun 2010
Mensajes: 4

Mensaje Publicado: Sab 12 Jun, 2010 00:54 am

Título del mensaje: Ayuda con arreglos

Responder citando

Bueno lo que quiero hacer es ordenar numeros de 3 digitos para eso la cosa es tomar las unidades del numero y ordenar el numero deacuerdo a su unidad en un arreglo, despues ordenarlos deacuerdo a su decena y al final por su centena y al final quedaran ordenados.
Bueno hasta ahorita el codigo que llevo es de sacar las unidades de los valores ingresados usando ademas lista simple pero ya no se como guardar el numero ingresado de acuerdo a su unidad.
No se si me entendieron o falta informacion o algo por el estilo pero basicamente lo que necesito es guardar el valor de los datos ingresados de acuerdo a su unidad.

Código:
 int dato[];
        int n;
        n=6;
        dato=new int[n];
        int lista[] = null;
        String cade = "";
               
for(int i=0; i<dato.length; i++){
dato[i]=Integer.parseInt
(JOptionPane.showInputDialog(null,"Introduce un numero"));
cade = cade + dato[i] + ", ";
}
ingresar.setText(cade);
           
    for (int i=0; i<n; i++){
            int unid = dato[i] % 10;
     
    agregarNodoLista(unid); // este metodo es de lista simple, donde me ordena los valores de las unidades de menor a mayor
   
     mostrarLista(); // este metodo solo las muestra para saber si estoy sacando las unidades y si las muestra en orden
    }


PD: Uso netbeans para programar en java.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 989
Ubicación: y*width+x

Mensaje Publicado: Sab 12 Jun, 2010 02:14 am

Título del mensaje: Re: Ayuda con arreglos

Responder citando

Vale, ahora parece que ya aprendiste o tienes noción del método Radix, al menos lo intentas, pero yo quisiera que enfocaras la aplicación de ésta forma. Primero intenta ordenar la lista, datos[], pero no lo hagas desde un método, quiero ver cómo haces el algoritmo de ordenamiento... ordena los datos de menor a mayor... y pon el algoritmo al final de éste código, que es el mismo que pasaste pero sin el bucle for y con una pequeña mejora...

Código:
...
...
        Scanner in = new Scanner(System.in);
        int dato[], lista[], n=3;

        dato=new int[n];
        String cade = "";
        // Tomas los valores
        for(int i=0; i<dato.length; i++){
            //dato[i]=Integer.parseInt (JOptionPane.showInputDialog(null,"Introduce un numero"));
            System.out.print(" Introduce un numero: "); dato[i]=in.nextInt();
            if ((dato[i]>999) || (dato[i]<100)) {
                System.out.println("El número introducido no tiene tres digitos");
                System.out.println("Por favor inténtelo de nuevo.");
                i--;
            } else cade = cade + dato[i] + ", ";
        }
        //ingresar.setText(cade); // Supuestamente muestras la cadena
        System.out.println(cade.substring(0, cade.length()-2));
       ...


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
sagdec



Registrado: 08 Jun 2010
Mensajes: 4

Mensaje Publicado: Sab 12 Jun, 2010 03:44 am

Título del mensaje: Re: Ayuda con arreglos

Responder citando

Bueno puse tu codigo y para ordenarlos use la lista simple :S, se que me dijiste que no usara el metodo pero por falta de tiempo tube que usarlo
el metodo para ordenar de lista simple lo pongo:
Código:
private void agregarNodoLista(int v){
        Lista aux,aux2,nuevo;
        nuevo = new Lista(v);
         int dato[], lista[], n=5;
    dato=new int[n];
       
        if (inicio == null)
            inicio = nuevo;
        else
            if (nuevo.info < inicio.info){
                nuevo.sigui = inicio;
                inicio = nuevo;
            }
            else{
            aux = inicio;
            while((aux.sigui != null)&&(aux.sigui.info < nuevo.info))
                aux = aux.sigui;
            if (aux.sigui == null)
                aux.sigui = nuevo;
            else{
                nuevo.sigui = aux.sigui;
                aux.sigui = nuevo;
            }
            }
      }


con eso me salen los datos ordenados de menor a mayor pero en que me ayuda?
esque necesito ordenarlos primero con la unidad del dato, luego por la decena y al final por la centena.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 989
Ubicación: y*width+x

Mensaje Publicado: Sab 12 Jun, 2010 05:14 am

Título del mensaje: Re: Ayuda con arreglos

Responder citando

Bueno en principio era para ayudarte a solucionar tu problema, pero no veo que tengas ninguna intención de aprender...

Código:
...
        Scanner in = new Scanner(System.in);
        int dato[], lista[], n=3;

        dato=new int[n];
        String cade = "";
        // Tomas los valores
        for(int i=0; i<dato.length; i++){
            System.out.print(" Introduce un numero: "); dato[i]=in.nextInt();
            if ((dato[i]>999) || (dato[i]<100)) {
                System.out.println("El número introducido no tiene tres digitos");
                System.out.println("Por favor inténtelo de nuevo.");
                i--;
            } else cade = cade + dato[i] + ", ";
        }
        // Supuestamente muestras la cadena
        System.out.println(cade.substring(0, cade.length()-2));

        // Ordena Unidades
        boolean no_interc=true;
        do{
            no_interc=false;
            for (int aux=0,j=0;j<dato.length-1;j++)
                if (dato[j]% 10>dato[j+1]% 10) {
                    no_interc=true;
                    aux=dato[j+1];
                    dato[j+1]=dato[j];
                    dato[j]=aux;
                    j=0;
                }
        } while (no_interc);
        int[] unidades=dato.clone();

        // Ordena Decenas donde la condicion es ((dato[j]% 100)/10>(dato[j+1]% 100)/10)
        // Ordenamos las Centenas donde la condicion es (dato[j]>dato[j+1])

        int[] nuevo=dato.clone();
        for (int i=0; i<n; i++){
            if ((centenas[i]<decenas[i]) && (centenas[i]<unidades[i]))
                nuevo[i]=centenas[i]; else
            if ((decenas[i]<centenas[i]) && (decenas[i]<unidades[i]))
                nuevo[i]=decenas[i]; else
            if ((unidades[i]<decenas[i]) && (unidades[i]<centenas[i]))
                nuevo[i]=unidades[i]; else nuevo[i]=dato[i];
               
            System.out.println("dato nuevo("+i+")="+nuevo[i]);
...
...


suerte Ok


http://www.youtube.com/watch?v=DzLKIW86hmM
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
sagdec



Registrado: 08 Jun 2010
Mensajes: 4

Mensaje Publicado: Sab 12 Jun, 2010 07:41 am

Título del mensaje: Re: Ayuda con arreglos

Responder citando

Bueno jeje grax por la ayuda me sirvio mucho y si le entendi lo que tratabas de explicarme.
saludos y grax

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Ayuda con secuencia de instalación .BAT

DanteSantana Programación en general 7 Dom 05 Sep, 2010 10:30 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Programa de encuestas AYUDA

Igna_775 C, C#, Visual C++ 1 Dom 29 Ago, 2010 23:15 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda por favoooor

thewalker Temas generales 4 Mie 25 Ago, 2010 19:05 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda chat en C que muestre la llegada del mens...

Luis Armando C, C#, Visual C++ 1 Sab 21 Ago, 2010 19:59 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

ayuda arrancadores

ordsystem Programación en general 1 Jue 19 Ago, 2010 02:34 am Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,