lunes, 27 de octubre de 2014

Sgn



' gambas class file

' by postapase

Public Sub Button1_Click()
Dim num As Integer

Randomize

num = Rnd(-1000, 1000) 'Rnd elige un numero aleatorio entre -1000 y 1000
'y lo guarda en la variable de tipo integer num

If Sgn(num) = 1 Then 'Sgn analiza el dato integer o numerico dentro de num
'y devuele 1 si el número es positivo o si es negativo devuelve -1
TextArea1.Text &= "El número " & num & " es un número positivo ( " & Sgn(num) & " )" & gb.NewLine
Else
TextArea1.Text &= "El número " & num & " es un número negativo ( " & Sgn(num) & " )" & gb.NewLine
Endif

End
 

domingo, 19 de octubre de 2014

Solución a reto Solveet (MayorSinDigito)



Se tiene un número X y se indica un dígito Y. Devolver un número Z que sea menor a X y que no posea el dígito Y.
La función/método puede aceptar dos argumentos: el número X y el dígito Y. No es necesario agregar ninguna validación para Y.
Ejemplos:
mayorSinDigito(123, 2) => 119
mayorSinDigito(113, 2) => 111
mayorSinDigito(113, 1) => 99


' gambas class file

' by postapase

Public Sub Form_Open()
Dim Num As Integer

Repeat
cbxDigitos.Add(Num)
Inc Num
Until Num > 9
cbxDigitos.Index = 0

End

Public Sub btnBuscar_Click()
MayorSinDigito(txtMayor.Text, cbxDigitos.Text)
End

Public Sub MayorSinDigito(Mayor As String, Digito As Integer)
Dim a, Resta1 As Integer

Resta1 = Mayor - 1

For a = Resta1 To 1 Step -1
If InStr(CString(a), CString(Digito)) = 0 Then
LabResultado.Text = "Número mayor es:" & a & " , sin digito " & Digito
Break
Endif
Next

End

sábado, 18 de octubre de 2014

Solución a Reto Solveet (Desglose en billetes)

Usando un bucle mediante Repeat/Until y Continue. Si la cantidad data es igual o mayor que 500 le restamos 500 si el resto es mayor o igual a 500 repetimos la operación sino continuamos con el billete menor de 200 así sucesivamente con las demás cantidades, cuando el resto sea 0 detenemos el bucle .



' gambas class file

' by postapase

Public Sub btnDesglosar_Click()
Dim Euros As Long
Dim Resto As Long
Dim Billete500, Billete200, Billete100, Billete50, Billete20, Billete10, Billete5, Moneda2, Moneda1 As Long
Euros = Val(txtEuros.Text)

TextArea1.Clear

Repeat
If Euros >= 500 Then
Resto = Euros - 500
Euros = Resto
Inc Billete500
If Euros < 500 Then
If Billete500 > 1 Then
TextArea1.Text &= Billete500 & " Billetes de 500 euros" & gb.NewLine
Else
TextArea1.Text &= Billete500 & " Billete de 500 euros" & gb.NewLine
Endif
Endif
If Resto > 500 Then Continue
Endif

If Euros >= 200 Then
Resto = Euros - 200
Euros = Resto
Inc Billete200
If Euros < 200 Then
If Billete200 > 1 Then
TextArea1.Text &= Billete200 & " Billetes de 200 euros" & gb.NewLine
Else
TextArea1.Text &= Billete200 & " Billete de 200 euros" & gb.NewLine
Endif
Endif
If Resto > 200 Then Continue
Endif

If Euros >= 100 Then
Resto = Euros - 100
Euros = Resto
Inc Billete100
If Euros < 500 Then
If Billete100 > 1 Then
TextArea1.Text &= Billete100 & " Billetes de 100 euros" & gb.NewLine
Else
TextArea1.Text &= Billete100 & " Billete de 100 euros" & gb.NewLine
Endif
Endif
If Resto > 100 Then Continue
Endif

If Euros >= 50 Then
Resto = Euros - 50
Euros = Resto
Inc Billete50
If Euros < 50 Then
If Billete50 > 1 Then
TextArea1.Text &= Billete50 & " Billetes de 50 euros" & gb.NewLine
Else
TextArea1.Text &= Billete50 & " Billete de 50 euros" & gb.NewLine
Endif
Endif
If Resto > 50 Then Continue
Endif

If Euros >= 20 Then
Resto = Euros - 20
Euros = Resto
Inc Billete20
If Euros < 20 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete20 & " Billetes de 20 euros" & gb.NewLine
Else
TextArea1.Text &= Billete20 & " Billete de 20 euros" & gb.NewLine
Endif
Endif
If Resto > 20 Then Continue
Endif

If Euros >= 10 Then
Resto = Euros - 10
Euros = Resto
Inc Billete10
If Euros < 10 Then
If Billete10 > 1 Then
TextArea1.Text &= Billete10 & " Billetes de 10 euros" & gb.NewLine
Else
TextArea1.Text &= Billete10 & " Billete de 10 euros" & gb.NewLine
Endif
Endif
If Resto > 10 Then Continue
Endif

If Euros >= 5 Then
Resto = Euros - 5
Euros = Resto
Inc Billete5
If Euros < 5 Then
If Billete20 > 1 Then
TextArea1.Text &= Billete5 & " Billetes de 5 euros" & gb.NewLine
Else
TextArea1.Text &= Billete5 & " Billete de 5 euros" & gb.NewLine
Endif
Endif
If Resto > 5 Then Continue
Endif

If Euros >= 2 Then
Resto = Euros - 2
Euros = Resto
Inc Moneda2
If Euros < 2 Then
If Moneda2 > 1 Then
TextArea1.Text &= Moneda2 & " Monedas de 2 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda2 & " Moneda de 2 euros" & gb.NewLine
Endif
Endif
If Resto >= 2 Then Continue
Endif

If Euros >= 1 Then
Resto = Euros - 1
Euros = Resto
Inc Moneda1
If Euros < 1 Then
If Moneda1 > 1 Then
TextArea1.Text &= Moneda1 & " Monedas de 1 euros" & gb.NewLine
Else
TextArea1.Text &= Moneda1 & " Moneda de 1 euros" & gb.NewLine
Endif
Endif
If Resto > 1 Then Continue
Endif
Until Resto = 0

End