elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa estaciones (cambio de if-else por switch)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa estaciones (cambio de if-else por switch)  (Leído 35,214 veces)
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Programa estaciones (cambio de if-else por switch)
« en: 11 Noviembre 2011, 11:57 am »

He realizado este programa que hace lo siguiente: Según el més que indiques, te dirá de que estación se trata, te pide que introduzcas otro numero de mes, hasta que pongas un 0, que el programa saldrá, el código es el siguiente:

Código
  1. // Ficheros include del sistema
  2. #include <stdio.h>
  3. // Ficheros include de la aplicacion
  4. // Constantes de la aplicacion
  5. #define ERROR     0
  6. #define INVIERNO  1
  7. #define PRIMAVERA 2
  8. #define VERANO    3
  9. #define OTONO     4
  10.  
  11. int main ()
  12. {
  13. int mes;
  14. int estacion;
  15.  
  16. do
  17. {
  18.  
  19. printf("Introduzca un mes: ");
  20. scanf(" %d", &mes);
  21. if (mes == 12 || mes == 1 || mes == 2)
  22. estacion = INVIERNO;
  23. else if (mes == 3 || mes == 4 || mes == 5)
  24. estacion = PRIMAVERA;
  25. else if (mes == 6 || mes == 7 || mes == 8)
  26. estacion = VERANO;
  27. else if (mes == 9 || mes == 10 || mes == 11)
  28. estacion = OTONO;
  29. else
  30. estacion = ERROR;
  31. if (mes >= 1 && mes <=12)
  32. printf("El mes %d pertenece a la estacion %d\n", mes, estacion);
  33. }
  34. while (mes > 0 );
  35.  
  36. return 0;
  37. }
  38.  

Pero ahora me piden sustituir el if-else anidado por una sentencia switch, y la verdad, no sé como implementarla, ¿alguna sugerencia?

Saludos


En línea

KaL3o

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Programa estaciones (cambio de if-else por switch)
« Respuesta #1 en: 11 Noviembre 2011, 12:34 pm »

hola yo cambiaria un poquito el codigo que tienes

Código
  1. // Ficheros include del sistema
  2. #include <stdio.h>
  3. // Constantes de la aplicacion
  4. #define INVIERNO  1
  5. #define PRIMAVERA 2
  6. #define VERANO    3
  7. #define OTONO     4
  8.  
  9. int main ()
  10. {
  11.    int mes;
  12.    int estacion;
  13.    do
  14.    {
  15.        printf("Introduzca un mes: ");
  16.        scanf(" %d", &mes);
  17.        if (mes==0)
  18.           return 0;
  19.        if (mes == 12 || mes == 1 || mes == 2)
  20.            estacion = INVIERNO;
  21.        if (mes == 3 || mes == 4 || mes == 5)
  22.            estacion = PRIMAVERA;
  23.        if (mes == 6 || mes == 7 || mes == 8)
  24.            estacion = VERANO;
  25.        if (mes == 9 || mes == 10 || mes == 11)
  26.            estacion = OTONO;
  27.        if (mes >= 1 && mes <=12)
  28.            printf("El mes %d pertenece a la estacion %d\n", mes, estacion);
  29.        else
  30.            printf("ERROR- El mes %d no corresponde a el mes de ningun año\n",mes);
  31.    }
  32.    while (mes != 0 );
  33.    return 0;
  34. }
  35.  

y con un switch seria

Código
  1. // Ficheros include del sistema
  2. #include <stdio.h>
  3. // Constantes de la aplicacion
  4. #define INVIERNO  1
  5. #define PRIMAVERA 2
  6. #define VERANO    3
  7. #define OTONO     4
  8.  
  9. int main ()
  10. {
  11.    int mes;
  12.    int estacion;
  13.    do
  14.    {
  15.        printf("Introduzca un mes: ");
  16.        scanf(" %d", &mes);
  17.        switch(mes)
  18.        {
  19.            case 1: estacion=INVIERNO;
  20.                 break;
  21.            case 2: estacion=INVIERNO;
  22.                 break;
  23.            case 3: estacion=PRIMAVERA;
  24.                 break;
  25.            case 4: estacion=PRIMAVERA;
  26.                 break;
  27.            case 5: estacion=PRIMAVERA;
  28.                 break;
  29.            case 6: estacion=VERANO;
  30.                 break;
  31.            case 7: estacion=VERANO;
  32.                 break;
  33.            case 8: estacion=VERANO;
  34.                 break;
  35.            case 9: estacion=OTONO;
  36.                 break;
  37.            case 10: estacion=OTONO;
  38.                 break;
  39.            case 11: estacion=OTONO;
  40.                 break;
  41.            case 12: estacion=INVIERNO;
  42.                 break;
  43.            case 0: printf("Buen Viaje...");
  44.                 fflush(stdin);
  45.                 getchar();
  46.                 break;
  47.            default: printf("ERROR- mes inexistente\n");
  48.        }
  49.        if (mes >= 1 && mes <=12)
  50.            printf("El mes %d pertenece a la estacion %d\n", mes, estacion);
  51.    }
  52.    while (mes != 0 );
  53.    return 0;
  54. }
  55.  


Aunque creo que no te ayudo mucho dandote la solución, bueno igual espero te sirva :)

salu2 ;)


En línea

Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Programa estaciones (cambio de if-else por switch)
« Respuesta #2 en: 11 Noviembre 2011, 14:57 pm »

Creo ser menos redundante así:

Código
  1. // por encima tienes que hacer un codigo de validacion [1, 12]
  2. int estacao = 1 + (mes / 3) % 4;
  3.  
  4. switch (estacao)
  5. {
  6.  case INVIERNO: puts("i"); break;
  7.  case PRIMAVERA: puts("p");  break;
  8.  case VERANO: puts("v"); break;
  9.  case OTONO: puts("o"); break;
  10. }
« Última modificación: 11 Noviembre 2011, 15:00 pm por LearningSpanishProgrammer » En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
KaL3o

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Programa estaciones (cambio de if-else por switch)
« Respuesta #3 en: 11 Noviembre 2011, 15:15 pm »

Código
  1. // por encima tienes que hacer un codigo de validacion [1, 12]
  2. int estacao = 1 + (mes / 3) % 4;
  3.  
  4. switch (estacao)
  5. {
  6.  case INVIERNO: puts("i"); break;
  7.  case PRIMAVERA: puts("p");  break;
  8.  case VERANO: puts("v"); break;
  9.  case OTONO: puts("o"); break;
  10. }
Me gusta tu solucion es mucho mejor :D
Salu2 ;)
En línea

Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Programa estaciones (cambio de if-else por switch)
« Respuesta #4 en: 12 Noviembre 2011, 14:23 pm »

Muchas gracias a ambos!

Saludos!
En línea

ceded

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Programa estaciones (cambio de if-else por switch)
« Respuesta #5 en: 2 Mayo 2019, 23:07 pm »

como diseño un algoritmo en sel2 que permita mostras las estaciones climaticas( verano, invierno, otoño, primavera.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Con que programa cambio este formato
Multimedia
kerios 1 2,470 Último mensaje 5 Octubre 2005, 11:22 am
por Songoku
no puedo compilar programa en c++ usando switch.
Programación C/C++
maxiilius 2 2,798 Último mensaje 8 Octubre 2012, 23:23 pm
por maxiilius
Programa C estructura switch.
Programación C/C++
Chetero 1 2,498 Último mensaje 18 Junio 2014, 08:47 am
por eferion
Las estaciones de tren incorporan nuevas cámaras que avisan si la mascarilla est
Noticias
El_Andaluz 0 1,983 Último mensaje 25 Junio 2020, 19:18 pm
por El_Andaluz
Algún programa efectivo cambio MAC Android?
Hacking Wireless
skysun 4 4,483 Último mensaje 11 Junio 2021, 17:59 pm
por skysun
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines