SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: damito666 en Lunes 31 de Octubre de 2005, 01:01

Título: Cadena De Caracteres Ayudaaa
Publicado por: damito666 en Lunes 31 de Octubre de 2005, 01:01
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
Título: Re: Cadena De Caracteres Ayudaaa
Publicado por: cpmario en Lunes 31 de Octubre de 2005, 01:24
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:
Título: Re: Cadena De Caracteres Ayudaaa
Publicado por: Alpha_ en Lunes 31 de Octubre de 2005, 13:45
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.
Título: Re: Cadena De Caracteres Ayudaaa
Publicado por: cpmario en Lunes 31 de Octubre de 2005, 17:54
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:
Título: Re: Cadena De Caracteres Ayudaaa
Publicado por: DiabloRojo en Martes 1 de Noviembre de 2005, 17:17
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.