Formar palabras de una sola

hse

Becerro
#1
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
 

hse

Becerro
#2
bueno esto es lo que llevo hasta ahora
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
 

hse

Becerro
#3
por si a alguien le sirve. al fin encontre el código correcto
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
esto lo hice con un text box un list box un boton y 4 labels. en visual 2008.
 

CompuDoc

Bovino adicto
#4
Se me hace que tu quieres un generador de palabras para los telejuegos.
llama yaaaaaaaaaaaaa........

Ya lo realize una vez, pero debes de compararlo contra un diccionario de palabras para que el resultado sea algo obvio.

Salu2
 
Arriba