decir si un caracter es vocal, consonante, número o signo de puntuación

Iniciado por minette1988, 24 Mayo 2010, 11:44 AM

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

minette1988

Hola, tengo que hacer un script que pida por teclado un carácter y determine si es una vocal, consonante, número o signo de puntuación. ¿Podéis echarme una mano?, ando muy perdida con esto de Visual Basic y el jueves tengo examen. Gracias.

Psyke1

Mira este ejemplo que hice:

Código (vb) [Seleccionar]

Rem añade un TextBox llamado Text1 y un CommandButton llamado Command1

Private Sub Command1_Click()
   Call Comprobar_Caracter(Text1.Text)
End Sub

Private Sub Form_Load()
   Text1.MaxLength = 1
End Sub

Private Sub Comprobar_Caracter(Cadena As String)
   If Len(Cadena) > 1 Then MsgBox "Solo se puede analizar un caracter", vbCritical, "Error": Exit Sub
   Dim Vocal As String, Consonante As String, Numero As String
   Vocal = "aeiou"
   Consonante = "bcdfghjklmnñpqrstvwxyz"
   Numero = "1234567890"
   If Not InStr(1, Vocal, Cadena) = 0 Then
       MsgBox "El caracter """ & Cadena & """ es una vocal", vbInformation
   ElseIf Not InStr(1, Consonante, Cadena) = 0 Then
       MsgBox "El caracter """ & Cadena & """ es una consonante", vbInformation
   ElseIf Not InStr(1, Numero, Cadena) = 0 Then
       MsgBox "El caracter """ & Cadena & """ es un número", vbInformation
   Else
       MsgBox "El caracter """ & Cadena & """ es un símbolo", vbInformation
   End If
End Sub


Espero haberte ayudado... ;)

Dessa

Hola PsYkE1, otra opcion seria



Option Explicit

Private Sub Form_DblClick()
  Me.Cls
End Sub

Private Sub Form_Load()
  Me.AutoRedraw = True
  StartHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
  StopHook
End Sub






Option Explicit

Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long
Dim hHook As Long

Public Sub StartHook()
    hHook = SetWindowsHookEx(13, AddressOf KeyProc, App.hInstance, 0)
End Sub

Public Sub StopHook()
    Call UnhookWindowsHookEx(hHook)
End Sub

Private Function KeyProc(ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Long

Form1.Caption = lParam
   
If wParam = 257 Then
    If lParam > 47 And lParam < 58 Then
        Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Numero"
    ElseIf lParam > 64 And lParam < 91 Then
        If lParam = 65 Or lParam = 69 Or lParam = 73 Or lParam = 79 Or lParam = 85 Then
            Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Letra Vocal"
        Else
            Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Letra Consonante"
        End If
    Else
        Form1.Print lParam & vbTab & Chr(lParam) & vbTab & "Ni letra ni numero"
    End If
End If

End Function





Adrian Desanti


[L]ord [R]NA


Dessa

Adrian Desanti

[D4N93R]

un hook para una tarea ta simple, se complicaron mucho ..

PD: Si , ya le hicieron la tarea del cole xD

Dessa

Cita de: Dessa en 24 Mayo 2010, 16:22 PM

Hola PsYkE1, otra opcion seria


me dirigia a PsYkE1, ya que se habló de un tema parecido en otro hilo del foro de VB6








Adrian Desanti

Psyke1

mmmmm
Teneis razon, quizas le hice los deberes... :-\
Aun asi, me sirvio para aprender una cosa nueva... :)

Salu2!

cobein

Me parece que esta manera es mejor para determinar el tipo de caracter puesto que funciona con ê,ñ, etc.

Option Explicit

Private Declare Function IsCharAlpha Lib "user32" Alias "IsCharAlphaA" (ByVal cChar As Byte) As Long
Private Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) As Long
'-1 - Error
' 0 - Symbol
' 1 - Vowel
' 2 - Consonant
' 3 - Number
Private Function CharacterKind(ByVal sChar As String) As Long
    Dim bChar As Byte
   
    If Len(sChar) = 1 Then
        bChar = Asc(UCase(sChar))
        If IsCharAlphaNumeric(bChar) Then
            If IsCharAlpha(bChar) Then
                Select Case bChar
                    Case 65, 69, 73, 79, 85
                        CharacterKind = 1
                    Case Else
                        CharacterKind = 2
                End Select
            Else
                CharacterKind = 3
            End If
        End If
    Else
        CharacterKind = -1
    End If
   
End Function
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.