none
Formar palabras de una sola RRS feed

  • Pregunta

  • Hola, tengo que hacer un programa que de una palabra que se escriba en un textbox, forme todas las posibles y las muestre en una lista asi com el numero de palabras formadas, ya lo he intentado pero la verdad soy muy malo en esto pero quiero aprender.

    lo que he hecho primero es poner un text box donde se escribira la palabra

    un list box donde se pondra cada una de las palabras formadas.

     un label donde pondra el total de palabras

    y un boton donde empezara la accion.

    lo que creia es que con un bucle se podria pero no!!!

    La clave creo ya la encontre es recorrer la primer letra una posición y la segunda ponerla en la primer posición y despues las demas letras, asi hasta que la palabra se repita.se detendra el proceso(por ello crei en un bucle, pero no se como escribirlo). ej SAL

    ASL

    dim nueva as string

    nueva = txtbx1.text.chars(0 +1) & txtbx.text.chars(1-1)& txtbx.text.chars(2)

    list_listbx.item.add(nueva)

    el problema es que cuando escriban una palabra de 15 letras :(

    espero me puedan ayudar ! a lo hago en visual basic 2008 express

    sábado, 6 de noviembre de 2010 2:04

Todas las respuestas

  • hola

    algo como esto

    Generar una Combinatoria de elementos

    sino vi mal el codigfo es para VB6, pero por la idea es la misma

    Not: cuando dice Command1 se refiere a un boton

     

    para contar la cantidad de items generados podrias suar

    ListBox.Items.Count

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 6 de noviembre de 2010 4:14
  • Gracias no use el código tal cúal pero me esta sirviendo algo de su estructura, lo que buscaba es solo poner las palabras con todas las letras, en el ejemplo que me mandaste pone muchas combinaciones pero incluyendo los de 1 dato. y mira siguiendo lo que comentaba de recorrer solo la letra principal hasta el final (con esto se forman nuevas palabras, con todos los caractéres) pude crear esta parte del código gracias a tu ayuda(por que no me acordaba de las funciones LEN y MID que me funcionaron bien).

    Private

     

    Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

    Dim primero As Integer = 0

     

    Dim segundo As Integer = 1

     

    Dim tercero As Integer = 3

     

    Dim original As String = ""

     

    For i = 0 To Palabra_txt.Text.Count + 1

     

     

    If tercero >= Palabra_txt.Text.Count + 2 Then Exit For

     

    If primero > 0 Then

    lista_listbox.Items.Add(Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original)))

    original = Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original))

     

    Else

    lista_listbox.Items.Add(Palabra_txt.Text.Chars(primero + 1) & Palabra_txt.Text.Chars(segundo - 1) & Mid(Palabra_txt.Text, tercero, Len(Palabra_txt.Text)))

    original = Palabra_txt.Text.Chars(primero + 1) & Palabra_txt.Text.Chars(segundo - 1) & Mid(Palabra_txt.Text, tercero, Len(Palabra_txt.Text))

     

    End If

    primero = primero + 1

    segundo = segundo + 1

    tercero = tercero + 1

     

    Next

    use como ejemplo la palabra toluca de 6 caracteres, si uso una palabra de 2 letras me causa error supongo. pero recorre bien la primer letra hasta la ultima posicion formando nuevas palabras. ahora estoy trabajando para ver como hacer que se repita este proceso hasta que la palabra llegue a ser toluca y ahi detener el proceso.jaja crei que era mas sencillo. Gracias por tu ayuda.

    sábado, 6 de noviembre de 2010 6:25
  • Aqui el código que use ya funciona al 100%. Gracias por tu ayuda ya me estaba dando por vencido jaja.

    Private

     

    Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    lista_listbox.Items.Clear()

     

    If Palabra_txt.Text = "" Then

    MsgBox(

    "Ingrese una palabra", MsgBoxStyle.Information)

    Palabra_txt.Focus()

     

    Exit Sub

     

    End If

     

     

    Dim primero As Integer = 0

     

    Dim segundo As Integer = 1

     

    Dim tercero As Integer = 3

     

    Dim original As String = ""

     

    For i = 0 To 1000

     

     

    If tercero >= Palabra_txt.Text.Count + 2 Then

    primero = 0

    segundo = 1

    tercero = 3

     

    If original = Palabra_txt.Text Then

    total_lbl.Text = lista_listbox.Items.Count

    MsgBox(

    "En total se pudieron formar " & lista_listbox.Items.Count & " palabras", MsgBoxStyle.Information)

     

    Exit For

     

    End If

     

    End If

     

    If primero > 0 Then

    lista_listbox.Items.Add(Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original)))

    original = Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original))

     

    Else

     

    If original = "" Then

    lista_listbox.Items.Add(Palabra_txt.Text.Chars(primero + 1) & Palabra_txt.Text.Chars(segundo - 1) & Mid(Palabra_txt.Text, tercero, Len(Palabra_txt.Text)))

    original = Palabra_txt.Text.Chars(primero + 1) & Palabra_txt.Text.Chars(segundo - 1) & Mid(Palabra_txt.Text, tercero, Len(Palabra_txt.Text))

     

    Else

    lista_listbox.Items.Add(Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original)))

    original = Mid(original, 1, primero) & original.Chars(primero + 1) & original.Chars(segundo - 1) & Mid(original, tercero, Len(original))

     

    End If

     

    End If

    primero = primero + 1

    segundo = segundo + 1

    tercero = tercero + 1

     

    Next

     

    End Sub

    sábado, 6 de noviembre de 2010 17:45