Esto muestra el calendario de un mes que elijamos
#include <stdio.h>
typedef enum TipoMes{
Nada, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre
};
typedef int TipoVector[12];
void CalcularDia(int anno, int mess, int & num){
TipoVector t;
t[0] = 0;
t[1] = 3;
t[2] = 2;
t[3] = 5;
t[4] = 0;
t[5] = 3;
t[6] = 5;
t[7] = 1;
t[8] = 4;
t[9] = 6;
t[10] = 2;
t[11] = 4;
if (mess < 3){
anno = anno - 1;
}
num = (anno + (anno / 4) - (anno / 100) + (anno / 400) + t[mess-1] + 1) % 7;
}
void MaximoMes(int anno, TipoMes mes, int & max){
if (mes == Febrero){
if ((anno % 4 == 0) && ((anno % 100 != 0) || (anno % 400 == 0))){
max = 29;
}
else{
max = 28;
}
}
else if(mes % 2 == 0){
if (mes < 8){
max = 30;
}
else{
max = 31;
}
}
else{
if (mes < 8){
max = 31;
}
else{
max = 30;
}
}
}
void StringMes(TipoMes 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 ");
}
}
int main(){
TipoMes mes;
int num, anno, max, mess;
printf("Mes? ");
scanf("%d",&mess);
printf ("Anno?");
scanf("%d",&anno);
if (anno <= 1600 || anno > 3000){
printf("Anno invalido");
} else {
mes = TipoMes(mess);
CalcularDia(anno, mess, num);
MaximoMes(anno, mes, max);
StringMes(mes);
if (num < 1){
num = 7;
}
printf(" %d", anno);
printf("\n===========================");
printf("\nLU MA MI JU VI | SA DO\n");
printf("===========================\n");
for (int i = 1; i < num; i++){
if (i == 5){
printf(" . | ");
}
else{
printf(" . ");
}
}
for (int i = 1; i <= max; i++){
if (i <= 9){
printf(" ");
}
if(num==5){
printf("%d | ",i);
}else{
printf("%d ",i);
}
if (num == 7){
printf("\n");
num = 0;
}
num++;
}
if ((num != 1) && (num != 8)){
while (num <= 7){
if (num == 5){
printf(" . | ");
}
else{
printf(" . ");
}
num++;
}
}
}
}