Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa signo zodiacal

Estas en el tema de Programa signo zodiacal en el foro de C/C++ en Foros del Web. Hola. He hecho un programa que te dice tu signo zodiacal a partir de tu fecha de nacimiento. El problema es que cuando intento ejecutarlo ...
  #1 (permalink)  
Antiguo 15/10/2011, 10:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Programa signo zodiacal

Hola. He hecho un programa que te dice tu signo zodiacal a partir de tu fecha de nacimiento. El problema es que cuando intento ejecutarlo la ventana se congela, he revisado la sintaxis y al parecer no esta mal.

EDITO: Agrego el código:

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4.  
  5. int main()
  6. {
  7.  
  8. int d, m;
  9.  
  10. printf("Bienvenido al calculador de signo zodiacal 3000\n");
  11. printf("Por favor introduzca su mes de nacimiento\n");
  12.  
  13. scanf("%i", &m);
  14.      
  15.      switch(m)
  16.      {
  17.               case 1:
  18.                    printf("Introduzca su dia de nacimiento\n");
  19.                    scanf("%i", d);
  20.                    if (d>20)
  21.                    printf("Su signo es acuario\n");
  22.                    else
  23.                    printf("Su signo es capricornio\n");
  24.                    break;
  25.                    
  26.               case 2:
  27.                     printf("Introduzca su dia de nacimiento\n");
  28.                     scanf("%i", d);
  29.                     if (d>19)
  30.                     printf("Su signo es piscis\n");
  31.                     else
  32.                     printf("Su signo es acuario\n");
  33.                     break;
  34.              
  35.               case 3:
  36.                    printf("Introduzca su dia de nacimiento\n");
  37.                    scanf("%i", d);
  38.                    if (d>20)
  39.                    printf("Su signo es Aries\n");
  40.                    else
  41.                    printf("Su signo es piscis\n");
  42.                    break;
  43.                    
  44.               case 4:
  45.                     printf("Introduzca su dia de nacimiento\n");
  46.                    scanf("%i", d);
  47.                    if (d>20)
  48.                    printf("Su signo es tauro\n");
  49.                    else
  50.                    printf("Su signo es aries\n");
  51.                    break;
  52.              
  53.               case 5:
  54.                    printf("Introduzca su dia de nacimiento\n");
  55.                    scanf("%i", d);
  56.                    if (d>21)
  57.                    printf("Su signo es geminis\n");
  58.                    else
  59.                    printf("Su signo es tauro\n");
  60.                    break;
  61.                    
  62.               case 6:
  63.                    printf("Introduzca su dia de nacimiento\n");
  64.                    scanf("%i", d);
  65.                    if (d>21)
  66.                    printf("Su signo es cancer\n");
  67.                    else
  68.                    printf("Su signo es geminis\n");
  69.                    break;
  70.                    
  71.               case 7:    
  72.                    printf("Introduzca su dia de nacimiento\n");
  73.                    scanf("%i", d);
  74.                    if (d>23)
  75.                    printf("Su signo es leo\n");
  76.                    else
  77.                    printf("Su signo es cancer\n");
  78.                    break;
  79.                    
  80.               case 8:
  81.                    printf("Introduzca su dia de nacimiento\n");
  82.                    scanf("%i", d);
  83.                    if (d>23)
  84.                    printf("Su signo es Virgo");
  85.                    else
  86.                    printf("Su signo es leo");
  87.                    break;
  88.                    
  89.               case 9:
  90.                printf("Introduzca su dia de nacimiento\n");
  91.                    scanf("%i", d);
  92.                    if (d>23)
  93.                    printf("Su signo es libra\n");
  94.                    else
  95.                    printf("Su signo es virgo\n");
  96.                    break;
  97.                    
  98.                case 10:
  99.                 printf("Introduzca su dia de nacimiento\n");
  100.                    scanf("%i", d);
  101.                    if (d>23)
  102.                    printf("Su signo es escorpio\n");
  103.                    else
  104.                    printf("Su signo es libra\n");
  105.                    break;
  106.                    
  107.                 case 11:
  108.                  printf("Introduzca su dia de nacimiento\n");
  109.                    scanf("%i", d);
  110.                    if (d>22)
  111.                    printf("Su signo es sagitario\n");
  112.                    else
  113.                    printf("Su signo es escorpio\n");
  114.                    break;
  115.                    
  116.                 case 12:
  117.                  printf("Introduzca su dia de nacimiento\n");
  118.                    scanf("%i", d);
  119.                    if (d>21)
  120.                    printf("Su signo es capricornio\n");
  121.                    else
  122.                    printf("Su signo es sagitario\n");
  123.                    break;
  124.                    
  125.                    
  126.                  system ("pause");
  127.                    
  128.                    
  129.                    }
  130.                    
  131.                    }

Última edición por JV21; 15/10/2011 a las 15:29
  #2 (permalink)  
Antiguo 15/10/2011, 18:50
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Programa signo zodiacal

Tienes 3 problemas, el primero es que te faltaron las llaves del if, y que en el scanf no pasas por referencia el día, acá tenes un case arreglado de ejemplo
Código C++:
Ver original
  1. case 2:
  2.                         printf("Introduzca su dia de nacimiento\n");
  3.                         scanf("%i", &d);
  4.                         if (d>19){
  5.                         printf("Su signo es piscis\n");
  6.                         }else{
  7.                         printf("Su signo es acuario\n");}
  8.                         break;

Y lo otro es el system pause, que va así
Código C++:
Ver original
  1. }
  2.                        system ("pause");
  3.                        }

Entre medio de las últimas 2 llaves, si no te queda dentro del switch, pero fuera de cualquier case, entonces nunca se ejecuta.
  #3 (permalink)  
Antiguo 16/10/2011, 03:58
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Programa signo zodiacal

Gracias por tu respuesta, ya había descubierto el error. En realidad lo que evitaba que se compilara era que no pasaba por referencia el día (lo 2do que has dicho), aún sin abrir las llaves del if el programa se ejecuta y es completamente funcional ¿debería poner las llaves de todas maneras?

Ah! gracias por lo del system ("pause"), estaba pegandome contra la pared ya que no sabía por que no funcionaba xD.
  #4 (permalink)  
Antiguo 16/10/2011, 04:39
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Programa signo zodiacal

Si los if funcionan igual, porque si los pones sin llaves, te toman la PRIMERA sentencia más próxima, y como solo tenes una, pues funciona normalmente. Pero no te olvides que para más de una sentencia hay que usarlos

Ahora que lo noto, te convendría pedir el día fuera del switch, te ahorrás muchas línea de código de esa manera.

Saludos

Última edición por latinpower; 16/10/2011 a las 10:19

Etiquetas: programa, signo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:53.