Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Yenifer Muete en 25 de Abril 2016, 08:30

Título: Visual Basic extraer dígitos de un número cifra a cifra determinar par o impar
Publicado por: Yenifer Muete en 25 de Abril 2016, 08:30
Buenas noches, necesito ayuda por favor. Tengo que hacer un programa donde en una caja de texto escriba un numero, y cada vez que escriba este me debe cargar en una lista, así:

cédula= 1 1  2 0 5 7 2 1 8 3

 lista
        1=impar
        1=impar
        2=par
        0=par
        5=impar
        7=impar

Lo debo realizar con una función publica, tampoco puedo utilizar la función len, y debe ser por ciclos, este es mi código:

Código: [Seleccionar]
Private Sub Txtcedula_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtcedula.TextChanged
        Dim num As Integer
        If Txtcedula.Text <> "" Then
            num = Txtcedula.Text
            For i = num To num
                If resultado(Txtcedula.Text) = True Then
                    Lstcedula.Items.Add(num & "=" & "PAR")
                Else
                    Lstcedula.Items.Add(num & "=" & "IMPAR")
                End If
            Next
        Else
            Lstcedula.Items.Clear()
        End If
    End Sub


Esta es la función:
Código: [Seleccionar]
Public Function resultado(ByVal numer As Integer) As Boolean
        Dim numeropar As Byte
        Dim retorno As Boolean
        numeropar = Fix(numer Mod 2)
        If numeropar = 0 Then
            retorno = True
        Else
            retorno = False
        End If
        Return retorno
    End Function.

Bueno resulta que el programa cuando lo depuro, me sale así.

cédula= 1 1  2 0 5 7 2 1 8 3

 lista
        1=impar
        11=impar
        112=par
        1120=par
        11205=impar
        112057=impar

y así sucesivamente, no sé cómo hacer, para ir eliminado el numero de atrás, ya intente con la función mid y no pude. Gracias por su pronta respuesta.

También, debo realizar una función publica, donde me diga cuantos caracteres tenga la caja de texto, y no se puede realizar con len. por favor agradezco su pronta ayuda. El código de esta es así:

Código: [Seleccionar]
Public Function cantidad(ByVal caracteres As String) As Byte
        Dim a As Byte
        a = Mid(caracteres, 1)
        Return a
    End Function


Y la llamo en el evento keypress, así:
Código: [Seleccionar]
Private Sub Txtnombre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txtnombre.KeyPress
        Select Case Asc(e.KeyChar)
            Case 97 To 122, 8, 32
            Case 13
                If Txtnombre.Text <> "" Then
                    Txtcarnombre.Text = cantidad(Val(Txtnombre.Text))
                    Txtcedula.Focus()
                Else
                    Txtcarnombre.Text = ""
                End If
            Case Else
                e.Handled = True
        End Select

Espero que por favor me ayude, la verdad me queda muy difícil, entender esto.
Título: Re:Visual Basic extraer dígitos de un número cifra a cifra determinar par o impar
Publicado por: César Krall en 27 de Abril 2016, 09:18
Hola! Antes de nada pedirte que leas las indicaciones en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 por ejemplo para poner título al tema, el título que has puesto no ayuda a saber de qué trata el tema ni a que una persona con conocimientos te pueda ayudar ya que el título no indica nada.

En el título debes especificar el lenguaje con el que estás trabajando, incluso la versión si es necesario, y una descripción del problema. Si no sabemos el lenguaje y/o versión no podremos ayudarte.

Recomendarte que revises este curso de Visual Basic: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

Te dejo algunos ejemplos que te pueden servir para sacar ideas:

Tratamiento como cadena:

Código: [Seleccionar]
Option Explicit On
Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim texto As String
        Dim i As Integer
        Dim continuar As Boolean

        texto = Text1.text
        continuar = True
        MsgBox(texto)

        i = 1
        Do

            If (Val(Mid(texto, i, 1)) Mod 2 = 0) Then
                MsgBox(Mid(texto, i, 1) & " : es par")
            Else
                MsgBox(Mid(texto, i, 1) & " : es impar")
            End If
            i = i + 1
        Loop While (i <= Text1.TextLength)

    End Sub
End Class


Tratamiento numérico basado en calcular el resto de dividir entre 10 para ir obteniendo la última cifra sucesivamente:

Código: [Seleccionar]
Option Explicit On
Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

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

        Dim numero As Integer
        Dim modulo As Integer
        Dim restante As Integer

        numero = Val(Text1.Text)
        modulo = numero Mod 10
        restante = (numero - modulo) / 10

        Do While (modulo <> 0)
 
            MsgBox("El numero es " & numero & " el modulo es " & modulo & " restante es " & restante)
            modulo = restante Mod 10
            restante = (restante - modulo) / 10
        Loop

    End Sub
End Class


Saludos!