Autor
|
Tema: Ayuda: Código en Visual Basic 6.0 (Leído 3,963 veces)
|
jduo
Desconectado
Mensajes: 12
|
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
|
#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
Mensajes: 12
|
No funciona.. aquí el código Private Sub Form_Load() Dim numero As Integer Dim suma As Integer Dim par As Boolean Dim digito As Integer numero = InputBox("Introduce un numero: ") par = False suma = 0 While numero > 0 digito = numero Mod 10 If digito Mod 10 = 0 Then suma = suma + digito par = True numero = numero / 10 End If Wend MsgBox ("La suma de los digitos pares han sido: " & suma) End Sub
[MOD] usar etiquetas GeSHi para publicar código.
|
|
« Última modificación: 19 Noviembre 2017, 02:54 am por simorg »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 12
|
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... Private Sub Form_Load() Dim numero As Integer Dim suma As Integer Dim par As Boolean Dim digito As Integer numero = InputBox("Introduce un numero: ") par = False suma = 0 While numero > 0 digito = numero Mod 10 If digito Mod 2 = 0 Then suma = suma + digito par = True numero = numero / 10 End If Wend MsgBox ("La suma de los digitos pares han sido: " & suma) End Sub
|
|
|
En línea
|
|
|
|
engel lex
|
Usa la lógica al programar estás dejando una variable al aire Aquí llegamos a una disyuntiva de interpretación 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
|
Te corrijo el código in situ... Private Sub Form_Load() Dim numero As Integer, suma As Integer, digito As Integer ' , par As Boolean no hace falta 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' 'par = False 'suma = 0 con la declaración ya se establece el valor a 0. Do While (numero > 0) digito = (numero Mod 10) If ((digito And 1) = 0) Then ' "mod 2" es lo mismo que "and 1", pero así mucho más rápido suma = (suma + digito) 'par = True End If numero = (numero \ 10) ' esta línea debe quedar fuera del condicional ' se debe ejecutar si o si en cada ciclo, para tener acceso al siguiente dígito ' además debe ser "\" (una división entera) no "/" ' ...O bien eliminar los decimales con: numero = Int(numero / 10) ' porque dejará decimales y al ser 'numero' declarado entero forzará un redondeo que falsea el resultado... Loop MsgBox ("La suma de los digitos de valor par es: " & suma) End Sub
|
|
« Última modificación: 20 Noviembre 2017, 01:03 am por NEBIRE »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con un codigo en visual basic
Programación Visual Basic
|
Villamil
|
3
|
4,037
|
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
|
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
|
25 Enero 2012, 20:56 pm
por $Edu$
|
|
|
AYUDA CON UN CODIGO DE VISUAL BASIC
.NET (C#, VB.NET, ASP)
|
ronmslas
|
1
|
1,778
|
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
|
28 Febrero 2016, 21:53 pm
por Eleкtro
|
|