• Domingo 17 de Noviembre de 2024, 20:32

Autor Tema:  Organizar Letras De Una Palabra  (Leído 14632 veces)

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Organizar Letras De Una Palabra
« en: Domingo 18 de Marzo de 2007, 03:52 »
0
Hola, alguien me podria ayudar y decirme como armar el codigo para ordenar alfabeticamente todas las letras que hay en una palabra....

ejemplo, si tengo:

Código: Text
  1. String palabra = "supercalifragilistico";
  2.  


al final debo obtener en la salida: acefgiloprstu

ayuda por favorrrrrr!!!  :blink:

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #1 en: Domingo 18 de Marzo de 2007, 13:39 »
0
algo mas  :angry:  :angry:  :angry:

te ayudare con algo de la logica.

Una forma seria que te crees un array con la cantidad de casillas = cantidad de letras del alfabeto.
ahora recorre tu string letra por letra y agregala a tu array en su posicion que corresponde.

y para obtener tu strin recorres el array concatenando las letras que hay.

Deberias intentar hacer algo, cuando hay problemas no es solo pedir , tambien hay que intentar hacer algo, asi aprenderas mas.
Este soloucion  no es la mejor solucion, hay muchas mas.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #2 en: Domingo 18 de Marzo de 2007, 19:45 »
0
Con esto:

Código: Text
  1.  
  2. import java.util.*;
  3.  
  4. public class Palabras{
  5.  
  6.   public static void main(String Args[]){
  7.     String palabra = "supercalifragilistico";            
  8.     char arreglo[] = new char [palabra.length()];    
  9.    
  10.     for(int i=0; i<palabra.length(); i++){
  11.       arreglo[i]=palabra.charAt(i);
  12.     }
  13.    
  14.     Arrays.sort(arreglo);
  15.    
  16.     for(int i=0; i<palabra.length(); i++){
  17.       System.out.print(arreglo[i]);
  18.     }
  19.     System.out.print("\n");
  20.   }  
  21. }
  22.  
  23.  

he conseguido ordenar las letras del array, pero la salida es: aaccefgiiiilloprrsstu

ahora me falta eliminar las repetidas para que solo aparezcan una vez  :(

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #3 en: Domingo 18 de Marzo de 2007, 21:05 »
0
Citar
for(int i=0; i<palabra.length(); i++){
     arreglo=palabra.charAt(i);
   }

podrias verificar si ya existe, no agregarlo.

Código: Text
  1.  
  2. for(int i=0; i&#60;palabra.length(); i++){
  3.     if NoExiste(palabra.charAt(i)) {
  4.      arreglo[i]=palabra.charAt(i);
  5.     }
  6.  }
  7.  
  8.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

hano

  • Miembro activo
  • **
  • Mensajes: 87
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #4 en: Domingo 18 de Marzo de 2007, 22:03 »
0
Creo que un TreeSet te simplificará mucho la vida. El TreeSet mantiene una colección de elemento únicos y ordenados.

Saludos

Luis Javier López Arredondo
                                                                                               
Para programadores
http]
[url=https://hardprogrammer.blogspot.com]https]

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #5 en: Lunes 19 de Marzo de 2007, 01:58 »
0
Cita de: "hano"
Creo que un TreeSet te simplificará mucho la vida. El TreeSet mantiene una colección de elemento únicos y ordenados.

Saludos

Luis Javier López Arredondo
Es cierto, el treeset ayuda mucho, ahora lo que hice fue crear un treeset como me dijiste y agregarle uno por uno los caracteres del string, despues solo imprimo el treeset      :)

Código: Text
  1. import java.util.*;
  2.  
  3. public class Palabras2{
  4.  
  5.   public static void main(String Args[]){
  6.     String palabra = &#34;supercalifragilistico&#34;;
  7.     TreeSet letrasOrdenadas = new TreeSet();
  8.    
  9.     for(int i=0; i&#60;palabra.length(); i++){
  10.       letrasOrdenadas.add(palabra.charAt(i));
  11.     }
  12.     System.out.println(letrasOrdenadas);
  13.   }  
  14.  
  15. }
  16.  

y la salida es esta: [a, c, e, f, g, i, l, o, p, r, s, t, u]

pero para mis propositos necesito pasar el contenido del treeset a un array.... y no se como  :(

otra opcion seria saber como "llamar" o hacer referencia a cada elemento del treeset y con un for imprimirlo...pero tampoco se como.... :o

lei la pagina pero no encontre como hacerlo

PD para lencho: no supe como armar el "if NoExiste"

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #6 en: Lunes 19 de Marzo de 2007, 08:32 »
0
Hola...

Citar
pero para mis propositos necesito pasar el contenido del treeset a un array.... y no se como

Si echáseis un vistazo de vez en cuando al API de java, en la parte de TreeSet, veríais que tiene un método que se llama toArray y que, además de convertir en array, si los elementos tienen un orden determinado, te los devuelve exactamente en el mismo orden...


Un saludo.



Silverfox

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #7 en: Martes 20 de Marzo de 2007, 02:45 »
0
No me funca  :(

Código: Text
  1.  
  2.     String[] y = letrasOrdenadas.toArray(new String[0]);
  3.    
  4.     System.out.println(y);
  5.  
  6.  

me da error

igual que asi

Código: Text
  1.  
  2.     char[] y = letrasOrdenadas.toArray(new char[0]);
  3.  
  4.  

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #8 en: Martes 20 de Marzo de 2007, 08:52 »
0
Hola...

Piensa un poco en lo que has escrito:

Citar
Código: Text
  1. new String[0]
  2.  


Estás reservando espacio para un arry de 0 posiciones...
Lo mismo te pasa con el de new char[0].

Prueba con

Código: Text
  1. String[] y = letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);
  2.  

A ver si tira mejor.



Un saludo.



Silverfox

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #9 en: Miércoles 21 de Marzo de 2007, 06:41 »
0
Gracias, pero no funciona, siempre me salen estos errores:

como sugerias:

Código: Text
  1. &#62;javac Palabras2.java
  2. Palabras2.java:14: incompatible types
  3. found   : java.lang.Object[]
  4. required: java.lang.String[]
  5.     String[] y = letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);
  6.                                                     ^
  7. Note: Palabras2.java uses unchecked or unsafe operations.
  8. Note: Recompile with -Xlint:unchecked for details.
  9. 1 error
  10. &#62;Exit code: 1
  11.  


aunque le ponga un tamaño especifico

Código: Text
  1. &#62;javac Palabras2.java
  2. Palabras2.java:14: incompatible types
  3. found   : java.lang.Object[]
  4. required: java.lang.String[]
  5.     String[] y = letrasOrdenadas.toArray(new String[20]);
  6.                                                     ^
  7. Note: Palabras2.java uses unchecked or unsafe operations.
  8. Note: Recompile with -Xlint:unchecked for details.
  9. 1 error
  10. &#62;Exit code: 1
  11.  

aunque ponga un arreglo de char's

Código: Text
  1. &#62;javac Palabras2.java
  2. Palabras2.java:14: cannot find symbol
  3. symbol  : method toArray(char[])
  4. location: class java.util.TreeSet
  5.     char[] y = letrasOrdenadas.toArray(new char[20]);
  6.                                           ^
  7. Note: Palabras2.java uses unchecked or unsafe operations.
  8. Note: Recompile with -Xlint:unchecked for details.
  9. 1 error
  10. &#62;Exit code: 1
  11.  

no le entiendo la verdad ya lo intenté de todas formas posibles  :brickwall:

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #10 en: Miércoles 21 de Marzo de 2007, 09:46 »
0
Hola...

Citar
public Object[] toArray(Object[] a)

Citar
found   : java.lang.Object[]
required: java.lang.String[]


Citar
String[] y = letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);

Precisamente eso es lo que te está dando error.
Tendrás que hacer un cast con el array de objetos que te devuelve el toArray.

Si estuvieras usando la versión 1.5 del compilador, podrías haber usado un template y tendrías esta declaración de método:

Código: Text
  1. public &#60;T&#62; T[] toArray(T[] a)
  2.  

y no tendrías que hacer ningún cast.


Espero haber sido claro esta vez.
Un saludo.



Silverfox

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #11 en: Miércoles 21 de Marzo de 2007, 12:15 »
0
Cita de: "cuper90"
PD para lencho: no supe como armar el "if NoExiste"
no recuerdo mucho de java, pero la logica seria asi.

Citar
boolean Existe (char arreglo_donde_va_a_buscar, String carcater_a_buscar){
       int i = 0;
       boolean sw = false;
       while i<arreglo_donde_va_a_buscar.lenght and not sw{
              if arreglo_donde_va_a_buscar = carcater_a_buscar{
                   sw = true;
              }
              i = i+1;
       }
       return sw;
}

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

cuper90

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #12 en: Sábado 24 de Marzo de 2007, 03:12 »
0
Cita de: "silverfox"
Hola...

Citar
public Object[] toArray(Object[] a)

Citar
found   : java.lang.Object[]
required: java.lang.String[]


Citar
String[] y = letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);

Precisamente eso es lo que te está dando error.
Tendrás que hacer un cast con el array de objetos que te devuelve el toArray.

Si estuvieras usando la versión 1.5 del compilador, podrías haber usado un template y tendrías esta declaración de método:

Código: Text
  1. public &#60;T&#62; T[] toArray(T[] a)
  2.  

y no tendrías que hacer ningún cast.


Espero haber sido claro esta vez.
Un saludo.



Silverfox
Hola, estoy deregreso.

pues no te entendi muy bien, a ver entonces el toarray devuelve un array tipo objeto o algo asi???? o como esta la cosa???

se podria solucionar asi????

Código: Text
  1. String[] y = (string) letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);
  2.  

Sisi

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #13 en: Jueves 21 de Junio de 2007, 06:27 »
0
De casualidad llegue aqui buscando el -Xlint,,,jeje,, y el enunciado de este codigo me llamo la atencion.
Bueno soy  principiante en java y nueva por aqui y mis codigos son aun muy primitivos...
Intente resolver este codigo como dijo Lencho, con la funcion NoExiste  y me salio así

import java.util.*;

public class Prueba{

 public static void main(String Args[]){
   String palabra = "supercalifragilistico";            
   char arreglo[] = new char [palabra.length()];    
   
   for(int i=0; i<palabra.length(); i++){
     if(NoExiste(palabra.charAt(i),arreglo))
        arreglo=palabra.charAt(i);
   }
   
   Arrays.sort(arreglo);
   
   for(int i=0; i<palabra.length(); i++){
     
        System.out.print(arreglo);
   }
   System.out.print("\n");
 }



 public static boolean NoExiste(char a,char[]array){
    for(int i=0;i<array.length;i++){
       if(a==array){
          return false;
          }
    }
    return true;
 }
 
}


y pues sale bien, las letras ordenadas pero con un enorme espacio al inicio..
Alquien sabe que es ese espacio..?..pense que eran espacios normales (' ') o null pero nada...

Sisi

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #14 en: Viernes 22 de Junio de 2007, 03:08 »
0
Cita de: "cuper90"
Cita de: "silverfox"
Hola...

Citar
public Object[] toArray(Object[] a)

Citar
found   : java.lang.Object[]
required: java.lang.String[]


Citar
String[] y = letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);

Precisamente eso es lo que te está dando error.
Tendrás que hacer un cast con el array de objetos que te devuelve el toArray.

Si estuvieras usando la versión 1.5 del compilador, podrías haber usado un template y tendrías esta declaración de método:

Código: Text
  1. public &#60;T&#62; T[] toArray(T[] a)
  2.  

y no tendrías que hacer ningún cast.


Espero haber sido claro esta vez.
Un saludo.



Silverfox
Hola, estoy deregreso.

pues no te entendi muy bien, a ver entonces el toarray devuelve un array tipo objeto o algo asi???? o como esta la cosa???

se podria solucionar asi????

Código: Text
  1. String[] y = (string) letrasOrdenadas.toArray(new String[letrasOrdenadas.size()]);
  2.  
Estuve viendo los métodos que tiene TreeSet y encontre que el toArray devuelve un arreglo de Objects ..nada mas

Object[] toArray()

es decir la solucion seria asi
 Object array[]=t.toArray();
   for(int j=0;j<t.size();j++)
         System.out.print(array[j]);
   System.out.print("\n");

bueno si ya no te sirve que se quede como un comentario   :D .......saludos...

nopodes

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #15 en: Viernes 7 de Septiembre de 2007, 18:42 »
0
Los Adoro, no se imaginan lo falta que me hacia leer muchos de sus comentarios,
y lo bien que me viene ponerlos en Practica

 Ceci

luiguimen1

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #16 en: Sábado 24 de Mayo de 2008, 21:25 »
0
fasil
la primera parte la puede utilizar para dividir la palabra y al macenar la en un array

y la segunda parte es un algoritmo el cual pe permite seleccionar randomicamente un munero entre 1 y la distacia que yo le coloque ahora lo utico que tienes que hacer es modificarlos, agragardo en lugar de selecionar el numero que lo compare con un nuevo arreglo de las letras del abecedario. y los listo


// primera parte
import java.lang.*;
import javax.swing.JOptionPane;

public class Contar {
private String palabra;
private char[] conv;

public Contar(){
this.palabra="";
}

public String convertir(String pValor)
{      
    this.palabra = pValor;
    conv = new char[palabra.length()];//Longitud de la palabra que se quiere convertir
                                     // ahora sacamos las letras del string
    palabra.getChars(0,palabra.length(),conv,0);
    String listado="";
    String vocales="";
    String consonantes="";
    int z=0;
    int y=0;
    for(int i=0;i<conv.length;i++)
    {
        listado += this.conv;
        if(conv== 'a' || conv== 'e' || conv== 'i' || conv== 'o' || conv== 'u')
        { z=z+1;
          vocales=Integer.toString(z);
        }
        else
        {
            y=y+1;
            consonantes = Integer.toString(y);
        }
    }
    return listado+"\n numero de vocales es:  "+vocales+"\n el numero de consonantes es: "+consonantes;
}
public static void main (String [] args)
    {
         Contar a = new Contar();
         String Palaingre = JOptionPane.showInputDialog("Ingrese la palabra");
         JOptionPane.showMessageDialog( null, "Continene \n "+ a.convertir(Palaingre) +"", "busqueda",JOptionPane.INFORMATION_MESSAGE );
         System.exit(0);
    }

}


// segunda parte

public void ordenar()
  {    
int control=0;
      int tmp = (int) (Math.random()*10)+1;
        repartir[control]=tmp;
        while(control!=4)
        {
            tmp = (int) (Math.random()*10)+1;
            boolean si=true;
            for(int i=0;i<=control;i++)
            {
                if(repartir==tmp)
                {
                    si=false;
                }
            }
            if(si==true)
            {
                control++;
                repartir[control]=tmp;
            }
        }
  }

en colombia llamar al 3154725550
o mirar la pagina web luiguimen1.iespana.es

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Re: Organizar Letras De Una Palabra
« Respuesta #17 en: Domingo 25 de Mayo de 2008, 20:56 »
0
Puedes utilizar el metodo to charArray() para transformar tu String en una cadena de chars.
Despues utiliza el metodo short() para ordenarlos alfabeticamente.

Lo que yo se esque el metodo sort() te ordenara de 'a' a 'z', pero al reves, no estoy seguro como se podria hacer.

droezva

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Propongo Una Solución
« Respuesta #18 en: Miércoles 28 de Octubre de 2009, 00:03 »
0
Bueno soy nuevo aqui y vi este TEma y pues me intereso proponer una solucion al problema algo tarde creo.
Pero espero que sirva.

Código: Java
  1.  
  2. import java.util.*;
  3.  
  4. public class Cadena {
  5.  
  6.    public static void main(String args[])    
  7.     {
  8.         /*
  9.          Se utilizo parte del codigo que propuso el usuario "cuper90"
  10.          inicio codigo cuper90
  11.          **/
  12.         String palabra = "supercalifragilistico";
  13.         char[] letras;     
  14.         TreeSet letrasOrdenadas = new TreeSet();           
  15.         for(int i=0; i<palabra.length(); i++){
  16.           letrasOrdenadas.add(palabra.charAt(i));
  17.         }
  18.         /**
  19.              fin codigo cuper90
  20.         **/
  21.         /*
  22.          El Objeto letrasOrdenadas(TreeSet) mediante el metodo toString
  23.          regresa una cadena que es la misma si mandase
  24.          a imprimir la variable directamente con el metodo el println();
  25.          una vez que tenemos la cadena devuelta con toString()
  26.          utilizamos la metodo replaceAll que utiliza una sencilla
  27.          expresión regular que busca los "[" que aparecen al inicio, las ",",
  28.          el corchete "]" que aparece al fina y los espacios en blanco en blanco
  29.          remplazandolos por "", el metodo replaceAll() regresa una cadena
  30.          resultante con los reemplazos hechos, la cual la convertimos
  31.          a su vez en un arreglo de char con el metodo toChatArray()
  32.          y este arreglo es asignado a la variable letras que es un array.
  33.          */     
  34.         letras = letrasOrdenadas.toString().replaceAll("[\[|\]|,| ]", "").toCharArray();
  35.        
  36.         /*
  37.          Podemos recorre correctamente el arreglo de tipo char
  38.          **/
  39.         for(int i = 0; i < letras.length ; i ++)       
  40.             System.out.print(letras[i]);
  41.     }
  42. }
  43.  
  44.