Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int eh_bissexto(int ano);
- int dia_inicial_ano(int ano);
- int mes_quantidade_dia(int mes, int ano);
- void imprime_header(int mes, int ano);
- void imprime_calendario(int ano);
- int main()
- {
- int ano;
- printf("-ANO DESEJADO: ");
- scanf("%d", &ano);
- if(ano <= 1582)
- printf("O Calendario Gregoriano comecou em 1582.\n\n");
- else
- imprime_calendario(ano);
- return 0;
- }
- int eh_bissexto(int ano)
- {
- if((ano%4 == 0 && ano%100 != 0) || ano%400 == 0)
- return 1;
- else
- return 0;
- }
- int dia_inicial_ano(int ano)
- {
- //15 de Outubro de 1582 - transição para do calendario juliano para o gregoriano.
- //1 de Janeiro de 1583 foi Sabado - dia 6
- int dia = 6;
- //calcula o numero de dias ate o ano
- for(int i = 1583; i < ano; i++){
- dia += 365;
- if(eh_bissexto(i)) dia++;
- }
- //retorna o dia da semana 0-6
- return dia%7;
- }
- int mes_quantidade_dia(int mes, int ano)
- {
- //31 28-29 31 30 31 30 31 31 30 31 30 31 - codigo feio.
- if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) return 31;
- else if(mes == 4 || mes == 6 || mes == 9 || mes == 11) return 30;
- else if(mes == 2){
- if(eh_bissexto(ano)) return 29;
- else return 28;
- }
- }
- void imprime_header(int mes, int ano){
- printf("\n");
- if(mes == 1) printf(" Janeiro de %4d \n", ano);
- else if(mes == 2) printf(" Fevereiro de %4d \n", ano);
- else if(mes == 3) printf(" Marco de %4d \n", ano);
- else if(mes == 4) printf(" Abril de %4d \n", ano);
- else if(mes == 5) printf(" Maio de %4d \n", ano);
- else if(mes == 6) printf(" Junho de %4d \n", ano);
- else if(mes == 7) printf(" Julho de %4d \n", ano);
- else if(mes == 8) printf(" Agosto de %4d \n", ano);
- else if(mes == 9) printf(" Setembro de %4d \n", ano);
- else if(mes == 10) printf(" Outubro de %4d \n", ano);
- else if(mes == 11) printf(" Novembro de %4d \n", ano);
- else if(mes == 12) printf(" Dezembro de %4d \n", ano);
- printf(" DOM SEG TER QUA QUI SEX SAB \n");
- }
- void imprime_calendario(int ano)
- {
- int primeiro, dias;
- primeiro = dia_inicial_ano(ano);
- for(int mes = 1; mes <= 12; mes++){
- dias = mes_quantidade_dia(mes, ano);
- imprime_header(mes, ano);
- for(int s = primeiro; s; s--) printf(" ");
- for(int dia = 1; dia <= dias; dia++){
- printf(" %3d ", dia);
- if((primeiro+dia)%7 == 0 && dia != dias)
- printf("\n");
- }
- printf("\n");
- primeiro = (dias+primeiro)%7;
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement