Ayudas o sugerencias - programa signo zodiaco

Iniciado por NetStorm, 16 Mayo 2009, 04:01 AM

0 Miembros y 2 Visitantes están viendo este tema.

Myth.ck

Ahora arreglado el tema de la entrada con mayuscula o minuscula... Usando Ucase() Solo falta depurar un poco más los signos, pero creo que ya esta bien.

Código (vb) [Seleccionar]
Dim dia As String
Dim mes As String
Dim reponse As Boolean
Private Sub Form_Load()
    dia = InputBox("Ingrese dia", "Signos")
    If dia = "" Then
        End
    End If
    While (dia < 1) Or (dia > 31) Or (dia = "")
        MsgBox "Error, los meses solo contienen dias entre 1 y 31", vbOKOnly
        dia = InputBox("Ingrese dia", "Signos")
    Wend
    dia = Val(dia)
    mes = InputBox("Ingrese mes", "Signos")
    mes = UCase(mes)
    Select Case mes
        Case "ENERO"
        If dia < 21 Then
            MsgBox "CAPRICORNIO", vbOKOnly
        Else: MsgBox "ACUARIO", vbOKOnly
        End If
        Case "FEBRERO"
        If dia < 20 Then
            MsgBox "ACUARIO", vbOKOnly
        Else: MsgBox "PISCIS", vbOKOnly
        End If
        Case "MARZO"
        If dia < 21 Then
            MsgBox "PISCIS", vbOKOnly
        Else:  MsgBox "ARIES", vbOKOnly
        End If
        Case "ABRIL"
        If dia < 21 Then
             MsgBox "ARIES", vbOKOnly
        Else: MsgBox "TAURO", vbOKOnly
        End If
        Case "MAYO"
        If dia < 21 Then
            MsgBox "TAURO", vbOKOnly
        Else: MsgBox "GEMINIS", vbOKOnly
        End If
        Case "JUNIO"
        If dia < 21 Then
            MsgBox "GEMINIS", vbOKOnly
        Else: MsgBox "CANCER", vbOKOnly
        End If
        Case "JULIO"
        If dia < 24 Then
           MsgBox "CANCER", vbOKOnly
        Else: MsgBox "LEO", vbOKOnly
        End If
        Case "AGOSTO"
        If dia < 24 Then
            MsgBox "LEO", vbOKOnly
        Else: MsgBox "VIRGO", vbOKOnly
        End If
        Case "SETIEMBRE"
        If dia < 24 Then
            MsgBox "VIRGO", vbOKOnly
        Else: MsgBox "LIBRA", vbOKOnly
        End If
        Case "OCTUBRE"
        If dia < 24 Then
           MsgBox "LIBRA", vbOKOnly
        Else: MsgBox "ESCORPIO", vbOKOnly
        End If
        Case "NOVIEMBRE"
        If dia < 22 Then
            MsgBox "ESCORPIO", vbOKOnly
        Else: MsgBox "SAGITARIO", vbOKOnly
        End If
        Case "DICIEMBRE"
        If dia < 22 Then
            MsgBox "SAGITARIO", vbOKOnly
        Else: MsgBox "CAPRICORNIO", vbOKOnly
        End If
        Case Else
        MsgBox "Error", vbOKOnly
End Select
End
End Sub
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Jorgitoh

Tene en cuenta que estas usando Windows Forms y el user solo esta manejando la Consola. De todos modos la sintaxis esta bien, solo habria que cambiar los Input Box por ReadLine y los Message por WriteLine.

Saludos.

Myth.ck

Si  :xD anoche estuve hablando con el y aclarando un par de dudas que tenia. El problema creo que se ha solucionado.
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

NetStorm

Gracias ha sido un trabajo exitoso, lo habeís hecho excelente agradecer profundamente a m@deb su ánimo desinteresado por su ayuda de forma "integra" y no mediocre, paso cerca de 3 horas explicándome muchas cosas que ahora tengo claras aunque en clases ni las he tocado (por ejem. los forms), y nada agradecer a todos los integrantes del foro que también aportaron lo suyo ...

Finalmente quiero solicitarle al mod del foro que de por cerrado el tema, ya que se ha solucionado el problema.

Gracias, sinceramente sos grandes como dice m@deb... vale Che'

Salu2 desde Arequipa - Perú.

Myth.ck

Pues de nada.
Cuando uno ayuda, tambien aprende muchas cosas, ya que no soy un Gurú de la programación.
Sin mas que decir.

Salu2!
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

NetStorm

Bien para los interesados aquí está el código, como todavía veo que la prgunta está abierta, entonces posteo el código, OJO que esto es en modo consola, M@deb lo realizó en form, pero yo lo adapté a consola. En fin...

Imports system.console

Module module1
    Sub main()

        Dim dia As Integer
        Dim mes As String
        Dim feberror As Integer = 29

        Const horoaries As String = "hoy tendrás un gran día"
        Const horotauro As String = "hoy tendrás un gran día"
        Const horogeminis As String = "hoy tendrás un gran día"
        Const horocancer As String = "hoy tendrás un gran día"
        Const horoleo As String = "hoy tendrás un gran día"
        Const horovirgo As String = "hoy tendrás un gran día"
        Const horolibra As String = "hoy tendrás un gran día"
        Const horoescorpio As String = "hoy tendrás un gran día"
        Const horosagitario As String = "hoy tendrás un gran día"
        Const horocapricornio As String = "hoy tendrás un gran día"
        Const horoacuario As String = "hoy tendrás un gran día"
        Const horopiscis As String = "hoy tendrás un gran día"

        Writeline("Por favor, ingrese el dia de nacimiento")
        Dia = readline()
        If dia = (dia < 1) Or (dia > 31) Then
            WriteLine("Error, los meses solo contienen dias entre 1 y 31")
            ReadLine()
        Else
            WriteLine("Ahora ingrese el mes de nacimiento")
            mes = ReadLine()
            If mes = ("febrero") And (dia > 29) Then
                WriteLine("Oh, Oh!!!, febrero no tiene " & dia & " días, se le asignará 29 como valor")
                ReadLine()
                dia = 29
            Else
            End If
            mes = UCase(mes)
            Select Case mes
                Case "ENERO"
                    If dia < 21 Then
                        WriteLine("CAPRICORNIO " & horocapricornio)
                        ReadLine()
                    Else : WriteLine("ACUARIO " & horoacuario)
                        ReadLine()
                    End If
                Case "FEBRERO"
                    If dia < 20 Then
                        WriteLine("ACUARIO " & horoacuario)
                        ReadLine()
                    Else : WriteLine("PISCIS " & horopiscis)
                        ReadLine()
                    End If
                Case "MARZO"
                    If dia < 21 Then
                        WriteLine("PISCIS " & horopiscis)
                        ReadLine()
                    Else : WriteLine("ARIES " & horoaries)
                        ReadLine()
                    End If
                Case "ABRIL"
                    If dia < 21 Then
                        WriteLine("ARIES " & horoaries)
                        ReadLine()
                    Else : WriteLine("TAURO " & horotauro)
                        ReadLine()
                    End If
                Case "MAYO"
                    If dia < 21 Then
                        WriteLine("TAURO " & horotauro)
                        ReadLine()
                    Else : WriteLine("GEMINIS " & horogeminis)
                        ReadLine()
                    End If
                Case "JUNIO"
                    If dia < 21 Then
                        WriteLine("GEMINIS " & horogeminis)
                        ReadLine()
                    Else : WriteLine("CANCER " & horocancer)
                        ReadLine()
                    End If
                Case "JULIO"
                    If dia < 24 Then
                        WriteLine("CANCER " & horocancer)
                        ReadLine()
                    Else : WriteLine("LEO " & horoleo)
                        ReadLine()
                    End If
                Case "AGOSTO"
                    If dia < 24 Then
                        WriteLine("LEO " & horoleo)
                        ReadLine()
                    Else : WriteLine("VIRGO " & horovirgo)
                        ReadLine()
                    End If
                Case "SETIEMBRE"
                    If dia < 24 Then
                        WriteLine("VIRGO " & horovirgo)
                        ReadLine()
                    Else : WriteLine("LIBRA " & horolibra)
                        ReadLine()
                    End If
                Case "OCTUBRE"
                    If dia < 24 Then
                        WriteLine("LIBRA " & horolibra)
                        ReadLine()
                    Else : WriteLine("ESCORPIO " & horoescorpio)
                        ReadLine()
                    End If
                Case "NOVIEMBRE"
                    If dia < 22 Then
                        WriteLine("ESCORPIO " & horoescorpio)
                        ReadLine()
                    Else : WriteLine("SAGITARIO " & horosagitario)
                        ReadLine()
                    End If
                Case "DICIEMBRE"
                    If dia < 22 Then
                        WriteLine("SAGITARIO " & horosagitario)
                        ReadLine()
                    Else : WriteLine("CAPRICORNIO " & horocapricornio)
                        ReadLine()
                    End If
                Case Else
                    Write("Oh, oh!!!, ... Ha ocurrido un error los datos ingresados no son válidos")
                    ReadLine()
            End Select
            End If
    End Sub
End Module

h0oke

Código (vbnet) [Seleccionar]
        Const horoaries As String = "hoy tendrás un gran día"
        Const horotauro As String = "hoy tendrás un gran día"
        Const horogeminis As String = "hoy tendrás un gran día"
        Const horocancer As String = "hoy tendrás un gran día"
        Const horoleo As String = "hoy tendrás un gran día"
        Const horovirgo As String = "hoy tendrás un gran día"
        Const horolibra As String = "hoy tendrás un gran día"
        Const horoescorpio As String = "hoy tendrás un gran día"
        Const horosagitario As String = "hoy tendrás un gran día"
        Const horocapricornio As String = "hoy tendrás un gran día"
        Const horoacuario As String = "hoy tendrás un gran día"
        Const horopiscis As String = "hoy tendrás un gran día"


Una pregunta.. ¿Por qué declaras tantas veces lo mismo? No daría igual que uses:

Código (vbnet) [Seleccionar]
Const Horoscopo As String= "Hoy tendrás un gran dia"

NetStorm

Cierto ... tu lógica es aplastante, pero sabes, yo consideré la oportunidad de decirle a cada signo una cosa distinta, y como ves no soy bueno con eso de los horóscopos, imagina que en tu variable coloques "Hoy te amputaran la pierna", ¿a todos los signos les dirás lo mismo?, solo era cuestión de modificar el texto a distintas predicciones para cada signo, eso fue lo que yo consideré, pero como digo ... no soy bueno en eso, será que jamás creo en la suerte.  ;D

h0oke

 :D Entonces... no dije nada...  ::) Es verdad lo que dices, pero yo pensé que habias presentado de esa manera el programa.

seba123neo

#19
Hola, mira este codigo yo lo habia realizado cuando tuve que hacer algo parecido...es una funcion que se encarga de calcular el signo...y te ahorras todos esos SELECT CASE que no me gustan cuando son muchos...

Código (vbnet) [Seleccionar]
Imports system.console

Module module1
    Private Enum MESES
        ENERO = 1
        FEBRERO = 2
        MARZO = 3
        ABRIL = 4
        MAYO = 5
        JUNIO = 6
        JULIO = 7
        AGOSTO = 8
        SEPTIEMBRE = 9
        OCTUBRE = 10
        NOVIEMBRE = 11
        DICIEMBRE = 12
    End Enum

    Const horoaries As String = "hoy tendrás un gran día"
    Const horotauro As String = "hoy tendrás un gran día"
    Const horogeminis As String = "hoy tendrás un gran día"
    Const horocancer As String = "hoy tendrás un gran día"
    Const horoleo As String = "hoy tendrás un gran día"
    Const horovirgo As String = "hoy tendrás un gran día"
    Const horolibra As String = "hoy tendrás un gran día"
    Const horoescorpio As String = "hoy tendrás un gran día"
    Const horosagitario As String = "hoy tendrás un gran día"
    Const horocapricornio As String = "hoy tendrás un gran día"
    Const horoacuario As String = "hoy tendrás un gran día"
    Const horopiscis As String = "hoy tendrás un gran día"

    Sub main()

        Dim dia As Integer
        Dim mes As String
        Dim feberror As Integer = 29
        Dim vMes As MESES

        WriteLine("Por favor, ingrese el dia de nacimiento")
        dia = ReadLine()

        If dia = (dia < 1) Or (dia > 31) Then
            WriteLine("Error, los meses solo contienen dias entre 1 y 31")
            ReadLine()
        Else
            WriteLine("Ahora ingrese el mes de nacimiento")
            mes = ReadLine()

            If mes = ("febrero") And (dia > 29) Then
                WriteLine("Oh, Oh!!!, febrero no tiene " & dia & " días, se le asignará 29 como valor")
                ReadLine()
                dia = 29
            Else
            End If

            mes = UCase(mes)

            Dim a() As String = System.Enum.GetNames(vMes.GetType)
            Dim vIndiceMes As Integer
            For i As Integer = 0 To a.Length - 1
                If mes = a.GetValue(i) Then
                    vIndiceMes = i + 1
                    WriteLine(Zodiaco(vIndiceMes & dia))
                    ReadLine()
                    Exit Sub
                End If
            Next

            WriteLine("Oh, oh!!!, ... Ha ocurrido un error los datos ingresados no son válidos")
            ReadLine()
        End If
    End Sub

    Private Function Zodiaco(ByVal Fecha As Integer) As String
        If Fecha <= 219 And Fecha >= 121 Then
            Zodiaco = "ACURARIO " & horoacuario
        ElseIf Fecha <= 320 And Fecha >= 220 Then
            Zodiaco = "PISCIS " & horopiscis
        ElseIf Fecha <= 420 And Fecha >= 321 Then
            Zodiaco = "ARIES " & horoaries
        ElseIf Fecha <= 521 And Fecha >= 421 Then
            Zodiaco = "TAURO " & horotauro
        ElseIf Fecha <= 621 And Fecha >= 522 Then
            Zodiaco = "GEMINIS " & horogeminis
        ElseIf Fecha <= 722 And Fecha >= 622 Then
            Zodiaco = "CANCER " & horocancer
        ElseIf Fecha <= 822 And Fecha >= 723 Then
            Zodiaco = "LEO " & horoleo
        ElseIf Fecha <= 923 And Fecha >= 823 Then
            Zodiaco = "VIRGO " & horovirgo
        ElseIf Fecha <= 1023 And Fecha >= 924 Then
            Zodiaco = "LIBRA " & horolibra
        ElseIf Fecha <= 1122 And Fecha >= 1024 Then
            Zodiaco = "ESCORPIO " & horoescorpio
        ElseIf Fecha <= 1221 And Fecha >= 1123 Then
            Zodiaco = "SAGITARIO " & horosagitario
        Else
            Zodiaco = "CAPRICORNIO " & horocapricornio
        End If
    End Function
End Module


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson