Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: s3v3r en 16 Diciembre 2015, 11:37 am



Título: Ayuda con calendario
Publicado por: s3v3r en 16 Diciembre 2015, 11:37 am
Hola buenas, el caso es que soy nuevo con c+/- :D y tengo que realizar un programa que me ponga el calendario dandole un año y un mes...
Mi problema es que no se si en c+- esta permitido crear un array o algo donde almacene los meses y posteriormente cuando me den el numero del mes (ej 2 --> me ponga febrero)
Agradeceria mucho que me explicaran como hacerlo  ;-)


Título: Re: Ayuda con calendario
Publicado por: RevolucionVegana en 16 Diciembre 2015, 12:24 pm
Eso es una matriz no?


Título: Re: Ayuda con calendario
Publicado por: Orubatosu en 16 Diciembre 2015, 14:00 pm
Un Array corriente y moliente de strings

El número del mes será el índice de la matriz mas uno

Por ejemplo:

Meses[0] = "Enero"
Meses[1] = "Marzo"

etc... rizando el rizo se puede hacer un struct que incluye el string del nombre, un entero que indique el número de días de cada mes...

Y obviamente necesitas una rutina que te diga los años bisiestos


Título: Re: Ayuda con calendario
Publicado por: s3v3r en 16 Diciembre 2015, 22:21 pm
el caso es que no entiendo mucho el c+-, estoy lo haria con un array sencillo en java...
El programa entero lo tengo exo mediante "congruencia de zeller" y calculando tambien los dias del mes pero luego a la hora de transformar el numero en un mes me surge el problema.
Tenia pensado algo con enum, al menos lo llama asi por el libro en que me fijo.

typedef enum TipoMes{
  Enero, Febrero,Marzo,Abril.....};
algo así pero a la hora de acceder me surge el problema, no puedo poner mes[1] = Marzo por ejemplo... como se haría eso.
Es que en c+- no hay nada como en java que sea char h[10] = ..... y despues puedes modificar las posiciones o saber que hay dentro de cada posicion?


Título: Re: Ayuda con calendario
Publicado por: Orubatosu en 17 Diciembre 2015, 11:36 am
Es una opción, pero en C++ los arrays funcionan de una forma practicamente idéntica al Java. La numeración es exactamente la misma. Empiezas por
  • y terminas por el último.



Título: Re: Ayuda con calendario
Publicado por: s3v3r en 17 Diciembre 2015, 12:18 pm
pues entonces como lo hago porque me canta error cada vez que quiero acceder a una posicion... el caso es que si teneis algun sitio donde me enseñe o algo pues mejor que mejor


Título: Re: Ayuda con calendario
Publicado por: RevolucionVegana en 17 Diciembre 2015, 13:30 pm
Si pones el código (un gran trozo) te podríamos ayudar y detectar donde esta el error
Saludos


Título: Re: Ayuda con calendario
Publicado por: 0xFer en 17 Diciembre 2015, 20:13 pm
pues entonces como lo hago porque me canta error cada vez que quiero acceder a una posicion... el caso es que si teneis algun sitio donde me enseñe o algo pues mejor que mejor

Ninguno en particular, cualquier información que encuentres googleando te puede servir.


Título: Re: Ayuda con calendario
Publicado por: s3v3r en 24 Diciembre 2015, 13:55 pm
typedef enum TipoMes {
  Nada, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre
};

void DibujarCalendario(int mes) {

  if (mes == Enero) {
    printf("ENERO");
  }
  if (mes == Febrero) {
    printf("FEBRERO");
  }
  if (mes == Marzo) {
    printf("MARZO ");
  }
  if (mes == Abril) {
    printf("ABRIL                ");
  }
  if (mes == Mayo) {
    printf("MAYO                 ");
  }
  if (mes == Junio) {
    printf("JUNIO ");
  }
  if (mes == Julio) {
    printf("JULIO");
  }
  if (mes == Agosto) {
    printf("AGOSTO");
  }
  if (mes == Septiembre) {
    printf("SEPTIEMBRE");
  }
  if (mes == Octubre) {
    printf("OCTUBRE");
  }
  if (mes == Noviembre) {
    printf("NOVIEMBRE");
  }
  if (mes == Diciembre) {
    printf("DICIEMBRE");
  }
}

Hacerlo de esta manera me parece muy vulgar y poco eficiente :( si pongo
printf("%s",TipoMes(mes)); me da error y se cuelga el programa, el error no me aparece, directamente se cuelga.
Me interesa sustituir todos los if por lo de printf asi no tengo que estar comparando