Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: XVICT0RX en 28 Enero 2013, 22:18 PM

Título: Visual Basic
Publicado por: XVICT0RX en 28 Enero 2013, 22:18 PM
Ingresar un número distinto de cero. Calcular su factorial. Nota: factorial de 5 = 5 x 4 x 3 x 2 x 1 = 120 :huh:
Título: Re: Visual Basic
Publicado por: MCKSys Argentina en 28 Enero 2013, 22:43 PM
Y el código que tienes hasta ahora es.... ?

PD: Te informo que aquí no hacen tareas.  :)
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 22:55 PM
si sabes hacer un for.


solo tienes que multiplicar el valor en cada repetición del for con el anterior.

Título: Re: Visual Basic
Publicado por: XVICT0RX en 28 Enero 2013, 22:56 PM
este es el codigo k tengo pero esta mal... y no c kmo hacer para k me aparezca eso...
Código (vb) [Seleccionar]

Dim num As Integer
Dim fact As Integer

Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
Text1.Text.SetFocus
End Sub

Private Sub Command2_Click()
    fact = 1
    num = Text1.Text
   
    While num <> 0
        fact = fact * num
        num = num - 1
    Wend
   
    Text2.Text = fact
    Me.Text1.Enabled = False
    Me.Text2.Enabled = False
End Sub

Private Sub Command3_Click()
End
End Sub
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 23:05 PM
Puedes hacer algo tan simple como esto.

Código (vb) [Seleccionar]
Dim i As Integer
Dim x As Integer
Dim n As Integer

x = 1
n = 5
If n <> 0 Then
  For i = 1 To n
    x = x * i
  Next
End If

MsgBox x
Título: Re: Visual Basic
Publicado por: XVICT0RX en 28 Enero 2013, 23:10 PM
gracias
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 23:12 PM
Obviamente no funciona para números negativos. :) tienes que retocarlo.  :laugh:
Título: Re: Visual Basic
Publicado por: MCKSys Argentina en 28 Enero 2013, 23:15 PM
Tambien puedes hacer una función que se encargue de calcular el factorial de un numero cualquiera.
En este ejemplo está definida en forma recursiva:

Código (vb) [Seleccionar]

Function Factorial (n as long) as long
if n = 1 then
    Factorial = 1
else
    Factorial = n * Factorial(n-1)
end if
end function

Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
Text1.Text.SetFocus
End Sub

Private Sub Command2_Click()
    'fact = 1
    'num = Text1.Text
    'While num <> 0
    '    fact = fact * num
    '    num = num - 1
    'Wend
   
    'Text2.Text = fact
    if isnumeric(Text1.Text) then
        Text2.Text = Factorial(clng(Text1.Text)) 'si Text1 no tiene un numero, se generará un error, por eso usamos isnumeric antes
        Me.Text1.Enabled = False
        Me.Text2.Enabled = False
    else
        msgbox "Ingrese un numero!"
        text1.setfocus
    endif
End Sub

Private Sub Command3_Click()
End
End Sub
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 23:18 PM
@MCKSys Argentina

o simplemente aplicar valor absoluto a n. ya que  es igual 3*2*1 que -3*-2*-1.

Código (vb) [Seleccionar]
Dim i As Integer
Dim x As Integer
Dim n As Integer

x = 1
n = -5
If n <> 0 Then
  For i = 1 To Abs(n)
    x = x * i
  Next
End If


saludos
Título: Re: Visual Basic
Publicado por: MCKSys Argentina en 28 Enero 2013, 23:25 PM
Cita de: Danyfirex en 28 Enero 2013, 23:18 PM
@MCKSys Argentina

o simplemente aplicar valor absoluto a n. ya que  es igual 3*2*1 que -3*-2*-1.

Claro.

Mi idea no era corregir (ni nada por el estilo), sino mostrar un poco de programacion modular basica.  ;)
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 23:29 PM
Cita de: MCKSys Argentina en 28 Enero 2013, 23:25 PM
Claro.

Mi idea no era corregir (ni nada por el estilo), sino mostrar un poco de programacion modular basica.  ;)

Si seguro. Aunque te pinta mejor lo avanzado  ;)

saludos Capo.
Título: Re: Visual Basic
Publicado por: $Edu$ en 28 Enero 2013, 23:46 PM
3*2*1 != -3*-2*-1
6 != -6

Pero la solucion es tan facil como poner (-n)! = n! * (-1)^n  aunque en realidad segun la definicion el factorial de un numero negativo no es posible.
Título: Re: Visual Basic
Publicado por: Danyfirex en 28 Enero 2013, 23:49 PM
Cita de: $Edu$ en 28 Enero 2013, 23:46 PM
3*2*1 != -3*-2*-1
6 != -6

Pero la solucion es tan facil como poner (-n)! = n! * (-1)^n  aunque en realidad segun la definicion el factorial de un numero negativo no es posible.

ups quise decir igual a  3*2*1 = ABS(-3*-2*-1)


y si no se puede de negativos sera mientras sea >0.

saludos gracias por la corrección.