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.

NetStorm

Hola chicos he empezado a estudiar VB.NET, y resulta que termine los ejercicios de la clase entonces el profesor con cara de condenado me dijo: "Quiero que hagas un programa que muestre el horoscopo de una persona ingresando solo el dia y mes de nacimiento, aclaro que esto lo haciendo en aplicaciones para consola este es mi avance trate de hacerlo con IF, pero cuando mire el detalle d la fecha de nacimiento ... OH DIOS!!!, necesito sugerencias o como podría hacerlo, haber echenme una manito, porque recien inicio en esto

Imports System.Console
'PROGRAMA QUE MUESTRA EL SIGNO ZODIACAL DEL USUARIO CON EL DIA Y AÑO DE NACIMIENTO
Module Module12
    Sub main()
        Const ener As String = "Enero"
        Const febre As String = "Febrero"
        Const mar As String = "Marzo"
        Const abr As String = "Abril"
        Const mayo As String = "Mayo"
        Const jun As String = "Junio"
        Const jul As String = "Julio"
        Const agost As String = "Agosto"
        Const septi As String = "Septiembre"
        Const octub As String = "Octubre"
        Const novi As String = "Noviembre"
        Const dici As String = "Diciembre"

        Dim mes As String
        Dim dia As Integer

        WriteLine("Por favor, ingrese el mes de nacimiento")
        mes = ReadLine()
        WriteLine("Por favor, ingrese el día de nacimiento")
        dia = ReadLine()
        If mes = ener And dia < 20 < 18 Then


        End If
    End Sub
End Module


... Agradecido desde ya. Salu2 para todos.

Myth.ck

Aver si te sirve este code creado por (¯`·.¸º|- POLIFORMIC -|º¸.·´¯)

Código (cpp) [Seleccionar]
/*ingrese dia y mes de nacimiento, luego se debe determinar
su signo sodiacal*/
#include<iostream.h>
#include<conio.h>
int dia, mes;
void main(){
cout<<" TU SIGNO ZODIACAL ";
cout<<"\n\r ---------------";
cout<<"\n\r Ingrese el Dia y mes de nacimiento "; cin>>dia>>mes;
switch(mes){
      case 1: if(dia<21) cout<<"CAPRICORNIO";
              else       cout<<"ACUARIO"; break;
      case 2: if(dia<20) cout<<"ACUARIO";
              else       cout<<"PICIS"; break;
      case 3: if(dia<21) cout<<"PICIS";
              else       cout<<"ARIES"; break;
      case 4: if(dia<21) cout<<"ARIES";
              else       cout<<"TAURO"; break;
      case 5: if(dia<21) cout<<"TAURO";
              else       cout<<"GEMINIS"; break;
      case 6: if(dia<22) cout<<"GEMINIS";
              else       cout<<"CANCER"; break;
      case 7: if(dia<23) cout<<"CANCER";
              else       cout<<"LEO"; break;
      case 8: if(dia<23) cout<<"LEO";
              else       cout<<"VIRGO"; break;
      case 9: if(dia<23) cout<<"VIRGO";
              else       cout<<"LIBRA"; break;
      case 10: if(dia<23) cout<<"LIBRA";
              else       cout<<"ESCORPIO"; break;
      case 11: if(dia<22) cout<<"ESCORPIO";
              else       cout<<"SAGITARIO"; break;
      case 12: if(dia<22) cout<<"SAGITARIO";
              else       cout<<"CAPRICORNIO"; break;
   default:cout<<"\n\r Mes y Dia son incorrectos";
   }
   getch();
}
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Shell Root

Servira de Guia, porque eso no es VB... xD

Saludos!!!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Myth.ck

int dia, mes; == Dim dia as integer
                      Dim mes as integer
switch(mes)== Select case mes

cout<<"\n\r Ingrese el Dia y mes de nacimiento "; cin>>dia>>mes; == Inputbox

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

Jorgitoh

Hola buenas noches. Como primer instancia tienes que hacer el ingreso de datos que sino me equivoco el tuyo esta mas que bien:

        Dim mes As String
        Dim dia As Integer

        WriteLine("Por favor, ingrese el mes de nacimiento")
        mes = ReadLine()
        WriteLine("Por favor, ingrese el día de nacimiento")
        dia = ReadLine()

Al menos en C# ( desconozco VB pero debe ser lo mismo ) puedes pedir directamente la fecha con cierto formato y trabajar con el tipo de dato DateTime, pero de todos modos eso es solo un detalle que no afectaria el funcionamiento del programa.

Como segundo paso debes hacer un switch tal cual esta explicado en el ejemplo que te pusieron mas arriba. Seguramente conoces las estructuras de VB por lo cual lo unico que tienes que hacer es convertir ese codigo de C a VB. El cual su sintaxis no seria nada mas complicado que:

Switch ( mes )
Case ( 1 - 12 )
If
Else

Lo que hace este switch es simple. Primero realiza un case para cada mes del año y luego "segmenta" por asi decirlo los dias con el If. Dejando dentro del If los dias que son menores a 20 / 21 / 22 / 23 ( dependiendo del mes ) al cual se le asigna el signo correspondiente al mes, y luego en el Else toma los dias restantes, asignandole el signo siguiente.

Depende de ti asignar ese signo a una variable o imprimirlo directamente en Consola.

Creo que el ejemplo esta mas que explicado. Solo te faltaria a vos realizar el Switch con la sintaxis de VB, que sino me equivoco en VB se lo conoce como "Select Case".

Saludos.

Myth.ck

Espero que te sirve lo hice a las apuradas en 5 min
Código (vb) [Seleccionar]
Dim dia As Integer
Dim mes As Integer
Dim reponse As Boolean
Private Sub Form_Load()
    dia = InputBox("Ingrese dia", "Signos")
    mes = InputBox("Ingrese mes", "Signos")
    Select Case mes
        Case 1
        If dia < 21 Then
            reponse = MsgBox("CAPRICORNIO", vbOKOnly)
        Else: reponse = MsgBox("ACUARIO", vbOKOnly)
        End If
        Case 2
        If dia < 20 Then
            reponse = MsgBox("ACUARIO", vbOKOnly)
        Else: reponse = MsgBox("PISCIS", vbOKOnly)
        End If
        Case 3
        If dia < 21 Then
            reponse = MsgBox("PISCIS", vbOKOnly)
        Else: reponse = MsgBox("ARIES", vbOKOnly)
        End If
        Case 4
        If dia < 21 Then
            reponse = MsgBox("ARIES", vbOKOnly)
        Else: reponse = MsgBox("TAURO", vbOKOnly)
        End If
        Case 5
        If dia < 21 Then
            reponse = MsgBox("TAURO", vbOKOnly)
        Else: reponse = MsgBox("GEMINIS", vbOKOnly)
        End If
        Case 6
        If dia < 22 Then
            reponse = MsgBox("GEMINIS", vbOKOnly)
        Else: reponse = MsgBox("CANCER", vbOKOnly)
        End If
        Case 7
        If dia < 23 Then
            reponse = MsgBox("CANCER", vbOKOnly)
        Else: reponse = MsgBox("LEO", vbOKOnly)
        End If
        Case 8
        If dia < 23 Then
            reponse = MsgBox("LEO", vbOKOnly)
        Else: reponse = MsgBox("VIRGO", vbOKOnly)
        End If
      Case 9
      If dia < 23 Then
            reponse = MsgBox("VIRGO", vbOKOnly)
        Else: reponse = MsgBox("LIBRA", vbOKOnly)
        End If
      Case 10
      If dia < 23 Then
            reponse = MsgBox("LIBRA", vbOKOnly)
        Else: reponse = MsgBox("ESCORPIO", vbOKOnly)
        End If
      Case 11
      If dia < 22 Then
            reponse = MsgBox("ESCORPIO", vbOKOnly)
        Else: reponse = MsgBox("SAGITARIO", vbOKOnly)
        End If
      Case 12
      If dia < 22 Then
            reponse = MsgBox("SAGITARIO", vbOKOnly)
        Else: reponse = MsgBox("CAPRICORNIO", vbOKOnly)
      End If
     
      Case Else
       reponse = MsgBox("Error")
End Select
End Sub

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

NetStorm

Waooo, agradezco la última respuesta no tengo conocimiento de "case", pero ahora que veo la estructura aprendo más ... tio sos un grande, sabes la misma noche que escribi mi duda diseñe este algoritmo pero no sé porque no funciona alguien me da el "Hey!!!, fallaste en esto" ??? ... aqui les dejo el code aunque esta larguísimo.

Imports System.Console

Module Module1

    Sub Main()
        Const january As String = "enero"
        Const febrary As String = "febrero"
        Const march As String = "marzo"
        Const april As String = "abril"
        Const may As String = "mayo"
        Const june As String = "junio"
        Const july As String = "julio"
        Const agost As String = "agosto"
        Const september As String = "setiembre"
        Const october As String = "octubre"
        Const november As String = "noviembre"
        Const december As String = "diciembre"
        Const horoaries As String = "Hoy te ira bien aries"
        Const horotauro As String = "hoy te ira bien tauro"
        Const horogeminis As String = "Hoy te ira bien geminis"
        Const horocancer As String = "Hoy te ira bien cancer"
        Const horoleo As String = "Hoy te ira bien leo"
        Const horovirgo As String = "Hoy te ira bien virgo"
        Const horolibra As String = "Hoy te ira bien libra"
        Const horoescorpio As String = "Hoy te ira bien horoescorpio"
        Const horosagitario As String = "Hoy te ira bien sagitario"
        Const horocapricornio As String = "Hoy te ira bien capricornio"
        Const horoacuario As String = "Hoy te ira bien acuario"
        Const horopiscis As String = "Hoy te ira bien piscis"

        Dim mes As String
        Dim dia As Integer

        WriteLine("por favor ingrese el mes de nacimiento")
        mes = ReadLine()
        WriteLine("Ingrese su dia de nacimiento")
        dia = ReadLine()

        If mes = january And dia > 0 < 20 Then
            WriteLine(horocapricornio & " mucha suerte")
            ReadLine()
        Else
            If mes = january And dia > 19 < 32 Then
                WriteLine(horoacuario & " mucha suerte")
                ReadLine()
            Else
                If mes = febrary And dia > 0 < 19 Then
                    WriteLine(horoacuario & " mucha suerte")
                    ReadLine()
                Else
                    If mes = febrary And dia > 18 < 30 Then
                        WriteLine(horopiscis & " mucha suerte")
                        ReadLine()
                    Else
                        If mes = march And dia > 0 < 20 Then
                            WriteLine(horopiscis & " mucha suerte")
                            ReadLine()
                        Else
                            If mes = march And dia > 18 < 32 Then
                                WriteLine(horoaries & " mucha suerte")
                                ReadLine()
                            Else
                                If mes = april And dia > 0 < 19 Then
                                    WriteLine(horoaries & " mucha suerte")
                                    ReadLine()
                                Else
                                    If mes = april And dia >= 19 < 32 Then
                                        WriteLine(horotauro & " mucha suerte")
                                        ReadLine()
                                    Else
                                        If mes = may And dia >= 1 < 20 Then
                                            WriteLine(horotauro & " mucha suerte")
                                            ReadLine()
                                        Else
                                            If mes = may And dia >= 20 < 32 Then
                                                WriteLine(horogeminis & " mucha suerte")
                                                ReadLine()
                                            Else
                                                If mes = june And dia >= 1 < 21 Then
                                                    WriteLine(horogeminis & " mucha suerte")
                                                    ReadLine()
                                                Else
                                                    If mes = june And dia >= 21 < 32 Then
                                                        WriteLine(horocancer & " mucha suerte")
                                                        ReadLine()
                                                    Else
                                                        If mes = july And dia >= 1 < 22 Then
                                                            WriteLine(horocancer & " mucha suerte")
                                                            ReadLine()
                                                        Else
                                                            If mes = july And dia >= 22 < 32 Then
                                                                WriteLine(horoleo & " mucha suerte")
                                                                ReadLine()
                                                            Else
                                                                If mes = agost And dia >= 1 < 22 Then
                                                                    WriteLine(horoleo & " mucha suerte")
                                                                    ReadLine()
                                                                Else
                                                                    If mes = agost And dia >= 22 < 32 Then
                                                                        WriteLine(horovirgo & " mucha suerte")
                                                                        ReadLine()
                                                                    Else
                                                                        If mes = september And dia >= 1 < 22 Then
                                                                            WriteLine(horovirgo & " mucha suerte")
                                                                            ReadLine()
                                                                        Else
                                                                            If mes = september And dia >= 22 < 32 Then
                                                                                WriteLine(horolibra & " mucha suerte")
                                                                                ReadLine()
                                                                            Else
                                                                                If mes = october And dia >= 1 < 23 Then
                                                                                    WriteLine(horolibra & " mucha suerte")
                                                                                    ReadLine()
                                                                                Else
                                                                                    If mes = october And dia >= 23 < 32 Then
                                                                                        WriteLine(horoescorpio & " mucha suerte")
                                                                                        ReadLine()
                                                                                    Else
                                                                                        If mes = november And dia >= 1 < 21 Then
                                                                                            WriteLine(horoescorpio & " mucha suerte")
                                                                                            ReadLine()
                                                                                        Else
                                                                                            If mes = november And dia >= 21 < 32 Then
                                                                                                WriteLine(horosagitario & " mucha suerte")
                                                                                                ReadLine()
                                                                                            Else
                                                                                                If mes = december And dia >= 1 < 21 Then
                                                                                                    WriteLine(horosagitario & " mucha suerte")
                                                                                                    ReadLine()
                                                                                                Else
                                                                                                    If mes = december And dia >= 21 < 32 Then
                                                                                                        WriteLine(horocapricornio & " mucha suerte")
                                                                                                        ReadLine()
                                                                                                    Else
                                                                                                        WriteLine("Los datos ingresados no son correctos, deja de bromear conmigo que no tengo todo el dia ¿vale?")
                                                                                                        ReadLine()
                                                                                                    End If
                                                                                                End If
                                                                                            End If
                                                                                        End If
                                                                                    End If
                                                                                End If
                                                                            End If
                                                                        End If
                                                                    End If
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If

    End Sub

End Module

Myth.ck

Al tratar de compilarlo te larga error?... Antes de ponerme a leer todos esos if's anidados te agradeceria que pongas el error al compilar.
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

NetStorm

No ningun error ... solo que no funciona ... le pongo por ejemplo agosto 30 y me dice que soy LEO ... !!!! diablos... que pasa?  :o

Myth.ck

#9
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")
    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 < 22 Then
            MsgBox "GEMINIS", vbOKOnly
        Else: MsgBox "CANCER", vbOKOnly
        End If
        Case "julio"
        If dia < 23 Then
           MsgBox "CANCER", vbOKOnly
        Else: MsgBox "LEO", vbOKOnly
        End If
        Case "agosto"
        If dia < 23 Then
            MsgBox "LEO", vbOKOnly
        Else: MsgBox "VIRGO", vbOKOnly
        End If
        Case "setiembre"
        If dia < 23 Then
            MsgBox "VIRGO", vbOKOnly
        Else: MsgBox "LIBRA", vbOKOnly
        End If
        Case "octubre"
        If dia < 23 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 Sub
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.