• Domingo 22 de Diciembre de 2024, 15:01

Autor Tema:  Cadena De Caracteres Ayudaaa  (Leído 1564 veces)

damito666

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Cadena De Caracteres Ayudaaa
« en: Lunes 31 de Octubre de 2005, 01:01 »
0
Hola necesito alguna idea u ayuda con esto que me esta poniendo loco!.
En un TextBox ingreso 5 numeros, por ejemplo el 25313; necesito sumar todas las cifras de ese numero 2+5+3+1+3 y al resultado de ese numero (14) tengo que tambien sumarle las cifra osea  1+4, quedando una sola cifra 5.
Pueden darme alguna idea de como hacer eso.. POR FAVOR. Desde ya MUCHAS GRACIAS

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Cadena De Caracteres Ayudaaa
« Respuesta #1 en: Lunes 31 de Octubre de 2005, 01:24 »
0
Te hice la tarea:

Código: Text
  1. Private Sub Command1_Click()
  2.     Dim inctCnt As Integer
  3.     Dim intSumaToTal As Integer
  4.     Dim strTemp As String
  5.     For inctCnt = 1 To Len(Text1.Text)
  6.         intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)
  7.     Next inctCnt
  8.     strTemp = Trim(Str(intSumaToTal))
  9.     intSumaToTal = 0
  10.     For inctCnt = 1 To Len(strTemp)
  11.         intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)
  12.     Next inctCnt
  13.     Text2.Text = intSumaToTal
  14. End Sub
  15.  

 :devil:  :comp:

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Cadena De Caracteres Ayudaaa
« Respuesta #2 en: Lunes 31 de Octubre de 2005, 13:45 »
0
Código: Text
  1. Private Sub Command1_Click()
  2.    Dim inctCnt As Integer
  3.    Dim intSumaToTal As Integer
  4.    Dim strTemp As String
  5.    For inctCnt = 1 To Len(Text1.Text)
  6.        intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)
  7.    Next inctCnt
  8.    strTemp = Trim(Str(intSumaToTal))
  9.    intSumaToTal = 0
  10.    For inctCnt = 1 To Len(strTemp)
  11.        intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)
  12.    Next inctCnt
  13.    Text2.Text = intSumaToTal
  14. End Sub
  15.  

Funciona bien este código, pero solamente si el primer resultado da un número de 2 o 1 cifra.. pero si diera mayor (cosa difìcil, pero posible al fin y al cabo).

[code]Private Sub Command1_Click()
  Dim Contador As Integer
  Dim Suma As Integer
  Dim Cadena As String
  Cadena = Text1.Text
  While (Len(Cadena) > 1)
    Suma = 0
    For Contador = 1 To Len(Cadena)
      Suma = Suma + Mid$(Cadena, Contador, 1)
    Next Contador
    Cadena = Suma
  Wend
  Text1.Text = Cadena
[code]

Creo haberlo escrito bien.. hace muchísimo que no hago nada en VB. Saludos.
Alpha
http]

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Cadena De Caracteres Ayudaaa
« Respuesta #3 en: Lunes 31 de Octubre de 2005, 17:54 »
0
Te equivocas en cuanto a que el código que coloqué

Código: Text
  1. Private Sub Command1_Click()
  2.    Dim inctCnt As Integer
  3.    Dim intSumaToTal As Integer
  4.    Dim strTemp As String
  5.    For inctCnt = 1 To Len(Text1.Text)
  6.        intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)
  7.    Next inctCnt
  8.    strTemp = Trim(Str(intSumaToTal))
  9.    intSumaToTal = 0
  10.    For inctCnt = 1 To Len(strTemp)
  11.        intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)
  12.    Next inctCnt
  13.    Text2.Text = intSumaToTal
  14. End Sub
  15.  

Funciona con cualquier resultado que se tenga en la primer suma. No importa el número de cifras que se obtengan en el primer resultado.
Esta en la línea que hace ese trabajo.
Código: Text
  1. For inctCnt = 1 To Len(strTemp)
  2.  

Lo bueno es  que las dos rutinas funcionan.

 :comp:

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Cadena De Caracteres Ayudaaa
« Respuesta #4 en: Martes 1 de Noviembre de 2005, 17:17 »
0
Hola.
Me llamó la atención tanto la pregunta como las respuestas de este hilo. Así que me puse a probar y esto fue lo que salió:

Código: Text
  1.  
  2. Private Function CalcularDigito(num As String) As String
  3.    Dim VarTemp As String
  4.    Dim i As Integer
  5.    '
  6.    DoEvents
  7.    If (Not (IsNumeric(num))) Then
  8.       Err.Raise 1001, , "Argumento no válido. La función sólo acepta valores numéricos."
  9.       Exit Function
  10.    End If
  11.    '
  12.    If (Len(num) = 1) Then
  13.        CalcularDigito = num
  14.    Else
  15.       VarTemp = 0
  16.       For i = 1 To Len(num)
  17.          VarTemp = Trim(Str(Val(VarTemp) + Val(Mid(num, i, 1))))
  18.       Next
  19.       CalcularDigito = CalcularDigito(VarTemp)
  20.    End If
  21. End Function
  22.  
  23.  


Como vez es una función recursiva (se llama a sí misma) y como resultado devuelve un único dígito. No sé si era eso lo que buscabas...

Saludos.


DiabloRojo.