• Jueves 2 de Mayo de 2024, 05:45

Autor Tema:  Enum Y Switch  (Leído 1142 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Enum Y Switch
« en: Miércoles 21 de Septiembre de 2005, 18:07 »
0
Hola chic@s de SoloCodigo, pues ultimamente no he programado mucho, estoy realmente mal :angry: y pues empeze a volver a cojer C y empeze con unos ejercicios que habian en la web, uno de ellos pedia que segun una fecha que se introduzca calcular la cantidad de dias que han pasado desde el 1 de enero; estoy tratando de hacerla, para muchos de ustedes es pan comido, pero para mi es duro, bueno el caso es que por ayuda de eliza_marti ayer me acorde que con la funcion enum podia meter varias variables con valores diferentes, y pues creo que esta me sirve para dar los valores de los meses, lo que quiero es capturar esos valores, de pronto este mal, para eso pido ayuda, adjunto el código para que vean lo que trato de hacer, solo pido ayuda, no quiero que me muestren el código ya hecho, eso no me gusta me da wacala; aqui va.
Código: Text
  1. #include <stdio.h>
  2. #include <windows.h>
  3. int main(void)
  4. {
  5.  enum meses{
  6.             enero=31, febrero=28, marzo=31, abril=30, mayo=31, junio=30, julio=31,
  7.             agosto=31, septiembre=30, octubre=31, noviembre=30, diciembre=31
  8.            };
  9.  int iDia,  iCalc, iDias, iMes;
  10.  char cMes[10];
  11.  printf("Digite dia: ");
  12.  scanf("%d",&iDia);
  13.  printf("Digite mes: ");
  14.  scanf("%d",iMes);
  15.  switch(iMes)//EN ESTE SWITCH QUIERO SUMAR LOS DIAS DE LOS MESES, PERO
  16.  {                 //CREO QUE ESTA MAL
  17.   case '1': iDias=enero;
  18.   break;            
  19.   case '2': iDias=febrero;
  20.   break;
  21.   case '3': iDias=marzo;
  22.   break;            
  23.   case '4': iDias=abril;
  24.   break;
  25.   case '5': iDias=mayo;
  26.   break;            
  27.   case '6': iDias=junio;
  28.   break;
  29.   case '7': iDias=julio;
  30.   break;            
  31.   case '8': iDias=agosto;
  32.   break;
  33.   case '9': iDias=septiembre;
  34.   break;            
  35.   case '10': iDias=octubre;
  36.   break;
  37.   case '11': iDias=noviembre;
  38.   break;            
  39.   case '12': iDias=diciembre;
  40.   break;
  41.  }
  42.  printf("%s - %d",cMes,iDia);
  43.  Sleep(2000);
  44. }
  45.  
  46.  
El pasado son solo recuerdos, el futuro son solo sueños

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Enum Y Switch
« Respuesta #1 en: Miércoles 21 de Septiembre de 2005, 20:46 »
0
ahorita no tengo en que correrlo pero a simple vista ...
Citar
printf("Digite mes: ");
scanf("%d",iMes);

te falta guardar la variable scanf("%d",&iMes);

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Enum Y Switch
« Respuesta #2 en: Miércoles 21 de Septiembre de 2005, 21:58 »
0
No es eso mi querido mbrenes, yo tampoco si quiera lo he compilado, pero gracias por el error, lo que quiero es hacer una suma de los dias.
El pasado son solo recuerdos, el futuro son solo sueños

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Enum Y Switch
« Respuesta #3 en: Miércoles 21 de Septiembre de 2005, 22:52 »
0
puedes usar un arreglo en lugar de el enumerado:

int meses[11];
meses[ 0]=31;//Enero
meses[ 1]=28;//Febrero
...
meses[11]=31;//Diciembre

para calcular la cantidad de dias entre el 1 de Ene hasta fecha digitada por el usuario:

Código: Text
  1. int tdias=0;
  2. int c=0; //contador
  3. while (c<=iMes)
  4. {
  5.   tdias=tdias+meses[c];
  6.   c++;
  7. };
  8.  
  9. printf("total dias hasta la fecha: %d",tdias);
  10.  

pruebalo a ver :P

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Enum Y Switch
« Respuesta #4 en: Miércoles 21 de Septiembre de 2005, 23:10 »
0
:bravo:  :jumpie:  :gracias: mbrenes si asi era la mejor opcion, mira como lo deje, solo le modifique una pequeña anomalia, pero de resto todo queda super.
Código: Text
  1. #include <stdio.h>
  2. #include <windows.h>
  3. int main(void)
  4. {
  5.  int tdias=0, meses[12], c, iDia, iMes;
  6.  meses[0]=31;
  7.  meses[1]=28;
  8.  meses[2]=31;
  9.  meses[3]=30;
  10.  meses[4]=31;
  11.  meses[5]=30;
  12.  meses[6]=31;
  13.  meses[7]=31;
  14.  meses[8]=30;
  15.  meses[9]=31;
  16.  meses[10]=30;
  17.  meses[11]=31;
  18.  printf("Digite dia: ");
  19.  scanf("%d",&iDia);
  20.  printf("Digite mes: ");
  21.  scanf("%d",&iMes);
  22.  for(c=0;c<=iMes-1;c++)
  23.  {
  24.   tdias=tdias+meses[c];
  25.  }
  26.  printf("total dias hasta la fecha: %d",tdias);
  27.  Sleep(2000);
  28. }
  29. //MUCHISIMO MAS CORTO.
  30.  
El pasado son solo recuerdos, el futuro son solo sueños