Programación General > Visual Basic 6.0 e inferiores

 Cadena De Caracteres Ayudaaa

(1/1)

damito666:
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:
Te hice la tarea:


--- Código: Text ---Private Sub Command1_Click()    Dim inctCnt As Integer    Dim intSumaToTal As Integer    Dim strTemp As String    For inctCnt = 1 To Len(Text1.Text)        intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)    Next inctCnt    strTemp = Trim(Str(intSumaToTal))    intSumaToTal = 0    For inctCnt = 1 To Len(strTemp)        intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)    Next inctCnt    Text2.Text = intSumaToTalEnd Sub 
 :devil:  :comp:

Alpha_:

--- Código: Text ---Private Sub Command1_Click()   Dim inctCnt As Integer   Dim intSumaToTal As Integer   Dim strTemp As String   For inctCnt = 1 To Len(Text1.Text)       intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)   Next inctCnt   strTemp = Trim(Str(intSumaToTal))   intSumaToTal = 0   For inctCnt = 1 To Len(strTemp)       intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)   Next inctCnt   Text2.Text = intSumaToTalEnd Sub 
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.

cpmario:
Te equivocas en cuanto a que el código que coloqué


--- Código: Text ---Private Sub Command1_Click()   Dim inctCnt As Integer   Dim intSumaToTal As Integer   Dim strTemp As String   For inctCnt = 1 To Len(Text1.Text)       intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1)   Next inctCnt   strTemp = Trim(Str(intSumaToTal))   intSumaToTal = 0   For inctCnt = 1 To Len(strTemp)       intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1)   Next inctCnt   Text2.Text = intSumaToTalEnd Sub 
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 ---For inctCnt = 1 To Len(strTemp) 
Lo bueno es  que las dos rutinas funcionan.

 :comp:

DiabloRojo:
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 --- Private Function CalcularDigito(num As String) As String   Dim VarTemp As String   Dim i As Integer   '   DoEvents   If (Not (IsNumeric(num))) Then      Err.Raise 1001, , "Argumento no válido. La función sólo acepta valores numéricos."      Exit Function   End If   '   If (Len(num) = 1) Then       CalcularDigito = num   Else      VarTemp = 0      For i = 1 To Len(num)         VarTemp = Trim(Str(Val(VarTemp) + Val(Mid(num, i, 1))))      Next      CalcularDigito = CalcularDigito(VarTemp)   End IfEnd Function  

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.

Navegación

[0] Índice de Mensajes

Ir a la versión completa