Numeros narcisistas en Visual Basic 6.0

Un número narcisista es aquel que es igual a la suma de cada uno de sus dígitos elevados a la "n" potencia (donde "n" es el número de cifras del número).

Ejemplo 153 es un numero narcisista porque 
13 + 53 + 33 = 1 + 125 + 27 = 153

En el programa escribiras un numero entero cualquiera y el te dira si es narcisista o no. Para este programa sera necesario crear un formulario con un textbox llamado txtvalor y un command button llamado cmdcalcular. Escribir el siguiente codigo.


Dim entrada, salida, i, n As Integer

Option Explicit

Private Sub cmdcalcular_Click()
salida = 0
entrada = txtvalor.Text
n = Len(entrada)

For i = 1 To n
salida = salida + Val(Mid(entrada, i, 1) ^ n)

Next

If txtvalor = salida Then

MsgBox "Es un numeros narcisista"

Else

MsgBox "No es un numeros narcisista"

End If

txtvalor.SetFocus
End Sub



Foto marine - 3 by matmoon


Ejercicios resueltos VB 6.0: Precio por llanta


Escriba un programa para calcular el total que una persona debe pagar en una llantera, si el precio de cada llanta es de $70 si se compran menos de 5 llantas y de $60 si se compran 5 o mas.

Para este programa crear 2 textboxes con los nombres txtCantidad y txtPrecio y 1 boton con el nombre cmdCalcular y copiar y pegar el codigo de abajo.





Dim precio As Integer
Private Sub cmdCalcular_Click()

If txtCantidad = "" Or txtPrecio = "" Then
MsgBox "Por favor escriba una cantidad", vbExclamation, "Error"
Else


If txtCantidad < 5 Then

precio = 70

txtPrecio = precio * txtCantidad

ElseIf txtCantidad >= 5 Then

precio = 60

txtPrecio = precio * txtCantidad

End If

End If

End Sub






Photo: new york city by under-milkwood


Semaforo Visual Basic 6.0

Este es un programa que simula un semaforo real con un intervalo de 3 segundos.



Para ello insertamos 4 Shapes 3 en forma de circulo y 1 en forma de rectangulo.

Para cambiar la forma del Shape en un circulo ir a Propiedades > Shape.











Para darle color a los Shapes seleccionar el Shape > Propiedades > Fill Style  y cambiar a Solid.












Luego ir Propiedades > FillColor y elegir el color deseado.













Tambien hay que insertar un timer y asignarle en Interval el valor 3000 que significa 3 segundos. Para ello elegir el timer Propiedades > Interval > 3000.











El siguiente es el codigo para poner a funcionar el programa:

Private Sub Form_Load()
Shape2.Visible = True
Shape1.Visible = False
Shape3.Visible = False
End Sub

Private Sub Timer1_Timer()
If Shape1.Visible Then

Shape2.Visible = True
Shape1.Visible = False
Shape3.Visible = False

ElseIf Shape2.Visible Then

Shape3.Visible = True
Shape2.Visible = False
Shape1.Visible = False

Else

Shape1.Visible = True
Shape2.Visible = False
Shape3.Visible = False

End If

End Sub



Nota: Es necesario estar seguro de que los nombres de los Shapes y del Timer sean iguales en mi codigo como en el suyo para que el programa funcione.


Encontrar factor Visual Basic 6.0

El siguiente programa puede encontrar los factores de un numero introducido por el usuario el cual los mostrara en un Listbox. Para ello se utilizo la simple logica de que un numero es divisible por todos sus factores. El codigo es el suguiente:





Option Explicit

Private Sub Command1_Click()
List1.Clear
Dim N, x As Integer
N = Val(Text1.Text)
For x = 2 To N - 1
If N Mod x = 0 Then
List1.AddItem (x)
End If
Next
List1.AddItem (N)
Text1.SetFocus
End Sub

Private Sub Command2_Click()
Text1.Text = "0"
List1.Clear
Text1.SetFocus
End Sub




Encontrar el mayor numero Visual Basic 6.0

El siguiente programa permite al usuario insertar tres numeros para calcular cual es el mayor. En un cuarto input se imprimira el mayor de los tres.


El codigo es el siguiente:

Private Sub cmdcalcular_Click()

If Val(txt1.Text) > Val(txt2.Text) And Val(txt1.Text) > Val(txt3.Text) Then

txtresultado.Text = txt1.Text

Else

If Val(txt2.Text) > Val(txt3.Text) Then

txtresultado.Text = txt2.Text

Else

txtresultado.Text = txt3.Text

End If

End If


End Sub



Foto D126 by miobi


Convertir de numeros a letras en Visual Basic 6.0

El siguiente programa convertira los numeros en letras del 0 al 10,000. Para ellos utilizaremos 2 textbox llamado txtvalor y txtletras, y un commandbutton que se llamara Command1.

El siguiente es el codigo para hacer funcionar el programa. Copiar y pegar en el commandbutton Command1. 




Dim n, z, y, t As String


Private Sub Command1_Click()
n = Val(txtvalor)

If n = 0 Then
nn = ("cero")
End If

z = ""
y = ""
t = ""

For x = 1 To 4


If n = 1 Then
nn = ("uno")
End If


If n = 2 Then
nn = ("dos")
End If


If n = 3 Then
nn = ("tres")
End If


If n = 4 Then
nn = ("cuatro")
End If


If n = 5 Then
nn = ("cinco")
End If


If n = 6 Then
nn = ("seis")
End If


If n = 7 Then
nn = ("siete")
End If


If n = 8 Then
nn = ("ocho")
End If


If n = 9 Then
nn = ("nueve")
End If


If n = 10 Then
nn = ("dies")
End If


If n = 11 Then
nn = ("once")
End If


If n = 12 Then
nn = ("doce")
End If


If n = 13 Then
nn = ("trece")
End If


If n = 14 Then
nn = ("catorce")
End If


If n = 15 Then
nn = ("quince")
End If


If n = 16 Then
nn = ("dieciseis")
End If


If n = 17 Then
nn = ("diecisiete")
End If


If n = 18 Then
nn = ("dieciocho")
End If


If n = 19 Then
nn = ("diecinueve")
End If


If n = 20 Then
nn = ("veinte")
End If


If n = 21 Then
nn = ("veintiuno")
End If


If n = 22 Then
nn = ("veintidos")
End If


If n = 23 Then
nn = ("veintitres")
End If


If n = 24 Then
nn = ("veinticuatro")
End If


If n = 25 Then
nn = ("veinticinco")
End If


If n = 26 Then
nn = ("veintiseis")
End If


If n = 27 Then
nn = ("veintisiete")
End If


If n = 28 Then
nn = ("veintiocho")
End If


If n = 29 Then
nn = ("veintinueve")
End If

If n = 30 Then
nn = ("treinta")

End If


If n > 30 And n < 40 Then
z = "treinta"
s = n - 30
n = s
End If

If n = 40 Then
nn = ("cuarenta")

End If

If n > 40 And n < 50 Then
z = "cuarenta"
s = n - 40
n = s
End If

If n = 50 Then
nn = ("cincuenta")

End If

If n > 50 And n < 60 Then
z = "cincuenta"
s = n - 50
n = s
End If



If n = 60 Then
nn = ("sesenta")

End If

If n > 60 And n < 70 Then
z = "sesenta"
s = n - 60
n = s
End If


If n = 70 Then
nn = ("setenta")

End If

If n > 70 And n < 80 Then
z = "setenta"
s = n - 70
n = s
End If

If n = 80 Then
nn = ("cincuenta")

End If

If n > 80 And n < 90 Then
z = "ochenta"
s = n - 80
n = s
End If



If n = 90 Then
nn = ("noventa")

End If

If n > 90 And n < 100 Then
z = "noventa"
s = n - 90
n = s
End If

If n = 100 Then
nn = ("cien")

End If


If n > 100 And n < 200 Then
y = "ciento"
s = n - 100
n = s
End If

If n = 200 Then
nn = ("doscientos")

End If

If n > 200 And n < 300 Then
y = "doscientos"
s = n - 200
n = s
End If

If n = 300 Then
nn = ("trescientos")

End If

If n > 300 And n < 400 Then
y = "trescientos"
s = n - 300
n = s
End If

If n = 400 Then
nn = ("cuatrocientos")

End If

If n > 400 And n < 500 Then
y = "cuatrocientos"
s = n - 400
n = s
End If

If n = 500 Then
nn = ("quinientos")

End If

If n > 500 And n < 600 Then
y = "quinientos"
s = n - 500
n = s
End If


If n = 600 Then
nn = ("seiscientos")

End If

If n > 600 And n < 700 Then
y = "seiscientos"
s = n - 600
n = s
End If


If n = 700 Then
nn = ("setecientos")

End If

If n > 700 And n < 800 Then
y = "setecientos"
s = n - 700
n = s
End If


If n = 800 Then
nn = ("ochocientos")

End If

If n > 800 And n < 900 Then
y = "ochocientos"
s = n - 800
n = s
End If


If n = 900 Then
nn = ("novecientos")

End If

If n > 900 And n < 1000 Then
y = "novecientos"
s = n - 900
n = s
End If

If n = 1000 Then
nn = ("mil")

End If

If n > 1000 And n < 2000 Then
t = "mil"
s = n - 1000
n = s
End If

If n = 2000 Then
nn = ("dos mil")

End If

If n > 2000 And n < 3000 Then
t = "dos mil"
s = n - 2000
n = s
End If

If n = 3000 Then
nn = ("tres mil")

End If

If n > 3000 And n < 4000 Then
t = "tres mil"
s = n - 3000
n = s
End If

If n = 4000 Then
nn = ("cuatro mil")

End If

If n > 4000 And n < 5000 Then
t = "cuatro mil"
s = n - 4000
n = s
End If

If n = 5000 Then
nn = ("cinco mil")

End If

If n > 5000 And n < 6000 Then
t = "cinco mil"
s = n - 5000
n = s
End If

If n = 6000 Then
nn = ("seis mil")

End If

If n > 6000 And n < 7000 Then
t = "seis mil"
s = n - 6000
n = s
End If

If n = 7000 Then
nn = ("siete mil")

End If

If n > 7000 And n < 8000 Then
t = "siete mil"
s = n - 7000
n = s
End If

If n = 8000 Then
nn = ("ocho mil")

End If

If n > 8000 And n < 9000 Then
t = "ocho mil"
s = n - 8000
n = s
End If

If n = 9000 Then
nn = ("mil")

End If

If n > 9000 And n < 10000 Then
t = "nueve mil"
s = n - 9000
n = s
End If

If n = 10000 Then
nn = ("dies mil")

End If

txtletras.Text = t & " " & " " & y & " " & z & " " & nn

Next
End Sub



Como funcionara el codigo este código:

Dim n, z, y, t As String: Se declaran las variables n, z, y, t tipo cadena.

n = Val(txtvalor): Se asigna a la variable "n" el valor del textbox "txtvalor" en el cual insertaremos el numero que queramos convertir a letra.

If n = 0 Then nn = ("cero") End If: Empezamos preguntando que si el valor de la variable "n"es igual a cero entonces la variable "nn" sera igual a la cadena "cero", este es el numero en letra.

t = "": Se inicializa la variable t con un valor vacio, se le asignas comillas por ser una variable tipo cadena.

For x = 1 To 4: El "For" sirve para repetir un evento la cantidad de veces especificadas en el mismo. En este caso el se repetira 4 veces ya que como se convertiran los numeros hasta el 10,000 las cifras de los numeros  que estan antes del 10,000 son 4.

Luego al igual se continuara preguntando con el If que numero es cual para imprimirlos en letras.

If n > 30 And n < 40 Then z = "treinta" s = n - 30 n = s End If: A partir de el numero 30 se utilizara la variable z para imprimir los numeros correspondientes a la decena. Con la variable "s" se resta a la variable "n" (el valor del textbox) en este caso 30, para conseguir el numero restante en letras.

Y asi sucesivamente...

La variable "t" representa la unidad de mil, la variable "y" la centena, "z" la decena y la variable "nn" representa la unidad.



Foto Christine by matmoon

Visual Basic 6.0: Convertir de Decimal a Binario

Para hacer este programa vamos a utilzar dos textboxes txt_entrada y txt_salida. Y un CommandButtom cmd_calcular.

El sigte es el codigo completo para realizar el programa:



Dim dec, bin As Integer
Dim sal As String


Private Sub cmd_calcular_Click()

dec = Val(txt_entrada.Text)
sal = ""


While dec > 0

bin = Fix(dec) Mod 2
dec = Fix(dec) / 2
sal = bin & sal
txt_salida.Text = Val(sal)

Wend

txt_salida.SetFocus

End Sub

 


Explicacion del código:

Dim dec, bin As Integer: Declaramos las variables dec y bin tipo entero.

Dim sal As String: Declaramos la variable sal tipo cadena.

dec = Val(txt_entrada.Text): Asignamos a la variable dec el valor del textbox txt_entrada al mismo tiempo que la funcion "Val" convierte el textbox en entero.

sal = "": Inicializamos la variable sal con un valor vacío.

While dec > 0: Mientras la variable dec sea mayor que 0 entonces ...

bin = Fix(dec) Mod 2: La variable "bin" será igual al valor de la variable dec Mod 2.. El mod se utiliza para obtener el residuo de una división. La división será entre el número que le indiquemos al lado, en este caso el numero 2, por ser 2 la base de los numeros binarios.

dec = Fix(dec) / 2: Luego de obtener el primer residuo la variable "dec" tendra el valor de ella misma entre 2.

sal = bin & sal: La variable "sal" sera igual al valor de la variable bin (que contiene el residuo de la división) concatenada con la misma variabe "sal" para ir acumulando el valor de los demas residuos que se generen mientras se ejecuta el WHILE.

txt_salida.Text = Val(sal) :  Finalmente se asigna a el textbox txt_salida el valor de "sal".

Wend: Aqui termina de ejecutar el While y vuelva hacia arriba mientras se cumpla la condición especificada en el mismo.



*Notas: 

Funcion Val: Devuelve los números contenidos en una cadena como un valor numérico del tipo adecuado.
Funcion Fix: Devuelven la parte entera de un número.
& : Se utiliza para concatenar caracteres.


Como crear un login sencillo en Visual Basic 6.0

Para hacer un Login en VB 6.0 se necesitan los siguientes elementos:
2 form
2 label
2 text
2 commandbutton

Hacemos un primer formulario como el de la derecha. Los nombre para los objetos seran los siguientes: txtusuario y txtpassword, para los dos textbox y cmdingresar y cmdsalir, para los dos commandbutton. (Esto lo especificamos en las propiedades del objeto en la propiedad name)


Ahora vamos a programar los botones:


Botón Ingresar (cmdingresar)

Private Sub cmdingresar_Click()
If Len(Trim(txtusuario)) = 0 Or Len(Trim(txtpassword)) = 0 Then
txtusuario.SetFocus
MsgBox "Debe especificar el nombre y la contraseña de usuario"


ElseIf txtusuario = "admin" And txtpassword = "hola" Then
MsgBox "Bienvenido al sistema"
Form2.Show
Unload Me
Else
MsgBox "La contraseña y/o el nombre son incorrectos"
txtpassword.SelStart = 0
txtpassword.SelLength = Len(Trim(txtpassword))
txtpassword.SetFocus


End If
End Sub

Botón Salir (cmdsalir)


Private Sub cmdsalir_Click()
End
End Sub


Antes de correr el programa crear un segundo formulario que por defecto se llamara Form2.

Luego de haberlo creado entonces al ingresar el usuario y la contraseña correctas entonces permitira el acceso al segundo formulario que hallas creado.


Notas: 


-Para que al digitar caracteres el el textbox de la contraseña no se vean los caracteres ir a la propiedad PasswordChar del Textbox y digitar el caracter que queramos que aparesca en vez de la contraseña. Ej: *

-El codigo:
Private Sub cmdingresar_Click()
If Len(Trim(txtusuario)) = 0 Or Len(Trim(txtpassword)) = 0 Then
txtusuario.SetFocus
MsgBox "Debe especificar el nombre y la contraseña de usuario"
Pregunta si los textos estan vacios, si es asi enviar el cursor al txtusuario y mostrar un mensaje especificando que no deben estar vacios.

-El codigo:

ElseIf txtusuario = "admin" And txtpassword = "hola" Then
MsgBox "Bienvenido al sistema"
Form2.Show
Unload Me
Dice que si no estan los textbox vacios y el txtusuario es igual a "admin" y el txtpassword es igual a "hola" entoces mostrar un mensaje de bienvenida y abrir el formulario 2 (Form2.Show). La funcion Unload Me cierra el formulario Form1.

-El codigo:

Else
MsgBox "La contraseña y/o el nombre son incorrectos"


Dice que si el txtusuario no es igual a "admin" y e txtpassword no es igual a "hola" entonces mostrat un mensaje que diga que alguna o las dos palabras insertadas son icorrectas.

-Los estamentos:
txtpassword.SelStart = 0
txtpassword.SelLength = Len(Trim(txtpassword))
son utilizados para que se sulecciones el texto en este caso de la contraseña insertada y txtpassword.SetFocus lleva el cursor a txtpassword.