Programación General > Visual Basic para principiantes

 Problema Al girar palabras

(1/1)

mejork1capuleto:
Hola soy nuevo en esto de la programacion, utilizo visual studio 2005 y mi problema es el siguiente.
Me podrias dar el codigo para poder girar individualmente cada palabra de un texto.

Yo he creado 2 funciones, una para ver cuando es un Separador(un espacio) y otra para que me gire la palabra.
Despues llamo a las dos en la funcion principal...os pongo el codigo aqui haver si veis que faya.

Esta es la funcion separado:
   Private Function esseparador(ByVal c As String) As Boolean
        Const Separadores As String = " ,.;:(){}[]'¡!?¿-_" & vbCrLf
        If InStr(Separadores, c, CompareMethod.Binary) = 0 Then
            esseparador = False
        Else
            esseparador = True
        End If
    End Function

Esta es la funcion para girar la palabra
 Private Function giracad(ByVal palabra As String) As String
        giracad = ""
        Dim n As Integer
        For n = 1 To Len(palabra)
            giracad = Mid$(palabra, n, 1) + giracad
        Next n
    End Function

Y esta la funcion Principal donde uso las dos anteriores:
Private Function girapala(ByVal cad As String) As String
        Dim n As Integer
        girapala = ""
        Dim s As String = ""
        Dim palabra As String
        Dim c As String
        For n = 1 To Len(cad)
            c = Mid$(cad, n, 1)
            If esseparador(c) Then
                palabra = palabra + c
              Else
                giracad(palabra)
                s = s + palabra
                s = s + c
                palabra = ""
            End If
        Next n
        giracad(palabra)
        s = s + palabra
        girapala = s
    End Function

Este es el evento click
Private Sub cmdGira_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGira.Click
        txtDestino.Text = girapala(txtOrigen.Text)
    End Sub

Perdonad por el tocho haber si me podéis decir que es lo que falla!!gracias

fm89-10:
hola tu codigo esta casi bueno solo le hice unas pequeñas modificaciones.

--- Código: Visual Basic --- Private Function esseparador(ByVal c As String) As BooleanConst Separadores As String = " ,.;:(){}[]'¡!?¿-_" & vbCrLfIf InStr(1, Separadores, c, vbBinaryCompare) = 0 Thenesseparador = FalseElseesseparador = TrueEnd IfEnd FunctionPrivate Function giracad(ByVal palabra As String) As Stringgiracad = ""Dim n As IntegerFor n = Len(palabra) To 1 Step -1giracad = Mid$(palabra, n, 1) + giracadNextEnd FunctionPrivate Function girapala(ByVal cad As String) As StringDim n As Integergirapala = ""Dim s As StringDim palabra As StringDim c As StringFor n = Len(cad) To 1 Step -1c = Mid$(cad, n, 1)If esseparador(c) Thenpalabra = palabra + cElsegiracad (palabra)s = s + palabras = s + cpalabra = ""End IfNextgiracad (palabra)s = s + palabragirapala = sEnd FunctionPrivate Sub Command1_Click()Text1.Text = girapala(Text2.Text) End Sub   
ya lo probe y funciona, alguna duda me dices. suerte  :hola:

mejork1capuleto:
Gracias por la respuesta, pero no es exactamente lo que quiero, con tu ejemplo si pongo "hola que tal estas", me saldra esto....."satse lat euq aloh" y lo que quiero yo es que cada palabra se quede es su posicion original sabes? asi,
" aloh euq lat stse", haver si me puedes ayudar, gracias!!!!

fm89-10:
hola, tienes suerte que ahorita no tengo nada que hacer asi que te dejo el ejemplo como decias.


--- Código: Visual Basic --- Private Function esseparador(ByVal c As String) As BooleanConst Separadores As String = " ,.;:(){}[]'¡!?¿-_" & vbCrLfIf InStr(1, Separadores, c, vbBinaryCompare) = 0 Thenesseparador = FalseElseesseparador = TrueEnd IfEnd FunctionPrivate Function giracad(ByVal palabra As String) As Stringgiracad = ""Dim n As IntegerDim cad As StringFor n = Len(palabra) To 1 Step -1cad = Mid$(palabra, n, 1)giracad = giracad + cadNextEnd FunctionPrivate Function girapala(ByVal cad As String) As StringDim n As Integergirapala = ""Dim s As StringDim palabra As StringDim c As StringFor n = 1 To Len(cad)c = Mid$(cad, n, 1)If esseparador(c) Thenpalabra = palabra + giracad(s) + cs = ""Elses = s + cEnd IfNext ns = giracad(s)s = palabra + sgirapala = sEnd FunctionPrivate Sub Command1_Click()Text1.Text = girapala(Text2.Text)End Sub   
alguna duda me dices. suerte  :hola:

mejork1capuleto:
Gracias eso es lo que queria!!!!hoy tube un examen en el instituto!!!jaja...me salio bastante bien!!!!cuando tenga mas dudas las posteare!!!gracias!!! :P

Navegación

[0] Índice de Mensajes

Ir a la versión completa