Ingresar una oracion, toma cada palabra y contar sus vocales(Solucionado)

Iniciado por 01munrra, 29 Septiembre 2015, 13:03 PM

0 Miembros y 1 Visitante están viendo este tema.

01munrra

Hola amigos!, estoy haciendo un codigo que me piden: dada una oracion, tomar cada palabra de dicha oracion una ves contar las vocales de cada palabra y mostrarla. He programado lo siguiente:

Código (vb) [Seleccionar]

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles procesar.Click

       Dim palabra(), oracion() As String
       Dim letra As String
       Dim indice As String = 1
       Dim contar_vocal As Integer = 0
       Dim i As Integer

       oracion = Split(TextBox1.Text)

       For i = 0 To Len(TextBox1.Text)
           If i > 0 Then
               For long_pal = 1 To Len(oracion(i)) + 1
                   letra = Mid(oracion(i), 1, long_pal)

                   Select Case letra
                       Case "a"
                           contar_vocal = contar_vocal + 1
                       Case "A"
                           contar_vocal = contar_vocal + 1
                       Case "e"
                           contar_vocal = contar_vocal + 1
                       Case "E"
                           contar_vocal = contar_vocal + 1
                       Case "i"
                           contar_vocal = contar_vocal + 1
                       Case "I"
                           contar_vocal = contar_vocal + 1
                       Case "o"
                           contar_vocal = contar_vocal + 1
                       Case "O"
                           contar_vocal = contar_vocal + 1
                       Case "u"
                           contar_vocal = contar_vocal + 1
                       Case "U"
                           contar_vocal = contar_vocal + 1
                   End Select
                   letra = ""
               Next
               '                mostrar.Items.Add(letra)
               ' mostrar.Items.Add(oracion(i))
               ' mostrar.Items.Add(" Numeros de Vocales: ")
               ' mostrar.Items.Add(contar_vocal)
               contar_vocal = 0
           Else
               '  mostrar.Items.Add(oracion(i))
           End If
           i = i + 1
       Next

   End Sub


me arroja un error en:
Código (vbnet) [Seleccionar]
For long_pal = 1 To Len(oracion(i)) + 1
el siguiente Información adicional: Índice fuera de los límites de la matriz.

me pueden ayudar?...

rob1104

#1
Hola, creo que tu código está muy rebuscado, que tal algo así para que te bases un poco:

Código (vbnet) [Seleccionar]

Dim palabras() As String = txtOracion.Text.Split(" ")   'txtOracion es un textbox
Dim contador = 0
For i = 0 To palabras.Count() - 1
   For j = 0 To palabras(i).Length - 1
        If palabras(i)(j) = "a" Or palabras(i)(j) = "A" _
            Or palabras(i)(j) = "e" Or palabras(i)(j) = "E" _
            Or palabras(i)(j) = "i" Or palabras(i)(j) = "I" _
            Or palabras(i)(j) = "o" Or palabras(i)(j) = "O" _
            Or palabras(i)(j) = "u" Or palabras(i)(j) = "U" Then
                   contador += 1
          End If
    Next
Next
lblVocales.Text = contador.ToString()    'lblVocales es un Label


Esto te cuentas vocales de toda oración... ya te toca a ti separarlas por palabra si lo requieres.
Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.

01munrra

Gracias! ;-) ;-) me ayudo bastante...... practicamente hicistes todo, solo falto mostrar

Código (vbnet) [Seleccionar]

        Dim oracion() As String
        Dim contar_vocal As Integer = 0

        oracion = Split(TextBox1.Text)
        For i = 0 To oracion.Count() - 1
            If oracion(i) <> " " Then
                For j = 0 To oracion(i).Length - 1
                    If oracion(i)(j) = "a" Or oracion(i)(j) = "A" Or
                       oracion(i)(j) = "e" Or oracion(i)(j) = "E" Or
                       oracion(i)(j) = "i" Or oracion(i)(j) = "I" Or
                       oracion(i)(j) = "o" Or oracion(i)(j) = "O" Or
                       oracion(i)(j) = "u" Or oracion(i)(j) = "U" Then
                        contar_vocal = contar_vocal + 1
                    End If
                Next
                mostrar.Items.Add(oracion(i) & " Nº Vocales: " & contar_vocal)
                contar_vocal = 0
            End If
        Next