elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda: Código en Visual Basic 6.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda: Código en Visual Basic 6.0  (Leído 3,963 veces)
jduo

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda: Código en Visual Basic 6.0
« en: 19 Noviembre 2017, 01:13 am »

Buenas tardes, me gustaría ver si alguien me pudiera echar una mano.
Me ponen una lista de ejercicios y el último dice así.

Escribe un programa que, dado un número entero, calcule la suma de todos sus dígitos que sean pares. Para extraer los dígitos usaremos un bucle que divida X por 10 sucesivamente. El resto de cada división corresponde a cada uno de los dígitos.

Estoy dándome cabezazos y no sé donde estoy fallando...
Gracias de antemano.
Un saludo. :-\


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #1 en: 19 Noviembre 2017, 02:15 am »

Código:
#numero a procesar 
entero numero = 1203918273981723

#donde se almacena el resultado
entero suma = 0

#para saber si es par o no el numero de digito
booleano par = falso

#ciclo
mientras numero mayor que 0:

  #Sacamos el ultimo diigito
  entero digito = modulo(numero , 10)

  #si es par lo agregamos a la sumatoria
  si par: suma = suma + digito

  #negamos par para que invierta su contenido (verdadero a falso y viceversa)
  par = not par

  #dividimos el numero entre 10 para rodarlo una posicion
  numero = numero / 10
   
fin mientras


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
jduo

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #2 en: 19 Noviembre 2017, 02:37 am »

No funciona.. aquí el código

Código
  1. Private Sub Form_Load()
  2.  
  3. Dim numero As Integer
  4. Dim suma As Integer
  5. Dim par As Boolean
  6. Dim digito As Integer
  7.  
  8.  
  9.  
  10. numero = InputBox("Introduce un numero: ")
  11.  
  12. par = False
  13. suma = 0
  14.  
  15.    While numero > 0
  16.  
  17.        digito = numero Mod 10
  18.  
  19.        If digito Mod 10 = 0 Then
  20.        suma = suma + digito
  21.  
  22. par = True
  23.  
  24.        numero = numero / 10
  25.        End If
  26.    Wend
  27.  
  28.  
  29.        MsgBox ("La suma de los digitos pares han sido: " & suma)
  30.  
  31.  
  32.  
  33. End Sub
  34.  
  35.  


[MOD] usar etiquetas GeSHi para publicar código.
« Última modificación: 19 Noviembre 2017, 02:54 am por simorg » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #3 en: 19 Noviembre 2017, 03:04 am »

la linea 19 carece de sentido, no se de donde lo sacaste, igual que la 22

en la 19 ves si es par, es la 22 niegas el valor de par
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
jduo

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #4 en: 19 Noviembre 2017, 13:24 pm »

Correcto llevas razón engel, cambio el 10 por el 2 para saber si es par o no, pero no entiendo al línea 22, cuando ejecuto el código; introduce el usuario 44 devuelve 8, aparentemente funciona pero cuando introduzco 88 se queda colgado...

Código
  1. Private Sub Form_Load()
  2.  
  3. Dim numero As Integer
  4. Dim suma As Integer
  5. Dim par As Boolean
  6. Dim digito As Integer
  7.  
  8.  
  9.  
  10. numero = InputBox("Introduce un numero: ")
  11.  
  12. par = False
  13. suma = 0
  14.  
  15.    While numero > 0
  16.  
  17.        digito = numero Mod 10
  18.  
  19.        If digito Mod 2 = 0 Then
  20.        suma = suma + digito
  21.  
  22. par = True
  23.  
  24.        numero = numero / 10
  25.        End If
  26.    Wend
  27.  
  28.  
  29.        MsgBox ("La suma de los digitos pares han sido: " & suma)
  30.  
  31.  
  32.  
  33. End Sub
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #5 en: 19 Noviembre 2017, 16:14 pm »

Usa la lógica al programar estás dejando una variable al aire

Aquí llegamos a una disyuntiva de interpretación
Citar
calcule la suma de todos sus dígitos que sean pares.

Puede ser la suma de los dígitos cuya posición sea par (la que estoy haciendo) o la suma de los dígitos cuyo valor sea par

Define un camino y armalo, pero no a medio de ambos
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda: Código en Visual Basic 6.0
« Respuesta #6 en: 20 Noviembre 2017, 00:57 am »

Te corrijo el código in situ...

Código
  1. Private Sub Form_Load()
  2.    Dim numero As Integer, suma As Integer, digito As Integer ' , par As Boolean no hace falta
  3.  
  4.    numero = InputBox("Introduce un numero: ") ' si ofrece un valor superior a 32767 generará un error de desbordamiento, mejor si lo declaras como 'long', en vez de 'integer'
  5.    'par = False
  6.    'suma = 0  con la declaración ya se establece el valor a 0.
  7.    Do While (numero > 0)
  8.        digito = (numero Mod 10)
  9.        If ((digito And 1) = 0) Then ' "mod 2" es lo mismo que "and 1", pero así mucho más rápido
  10.            suma = (suma + digito)
  11.            'par = True
  12.        End If
  13.        numero = (numero \ 10) ' esta línea debe quedar fuera del condicional
  14.        ' se debe ejecutar si o si en cada ciclo, para tener acceso al siguiente dígito
  15.        ' además debe ser "\" (una división entera) no "/"
  16.        ' ...O bien eliminar los decimales con: numero = Int(numero / 10)
  17.        ' porque dejará decimales y al ser 'numero' declarado entero forzará un redondeo que falsea el resultado...
  18.    Loop
  19.  
  20.    MsgBox ("La suma de los digitos de valor par es: " & suma)
  21. End Sub
  22.  
« Última modificación: 20 Noviembre 2017, 01:03 am por NEBIRE » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con un codigo en visual basic
Programación Visual Basic
Villamil 3 4,037 Último mensaje 3 Agosto 2004, 21:48 pm
por zheo
Visual Basic 2008 - Necesito ayuda con un codigo (combobox)
.NET (C#, VB.NET, ASP)
polmp 2 7,861 Último mensaje 17 Abril 2010, 10:23 am
por Psyke1
Ayuda con Codigo en Visual Basic 6.0
.NET (C#, VB.NET, ASP)
bsosa 1 2,111 Último mensaje 25 Enero 2012, 20:56 pm
por $Edu$
AYUDA CON UN CODIGO DE VISUAL BASIC
.NET (C#, VB.NET, ASP)
ronmslas 1 1,778 Último mensaje 28 Febrero 2016, 22:15 pm
por Eleкtro
MOVIDO: AYUDA CON UN CODIGO DE VISUAL BASIC
Programación Visual Basic
Eleкtro 0 1,691 Último mensaje 28 Febrero 2016, 21:53 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines