MC102 - Lab03
Calendário

O algoritmo, a seguir, calcula em que dia da semana cai um determinado dia, mês e ano;

Se m >= 3 então m recebe m menos 2 e x recebe 8.
Senão a recebe a menos 1 e x recebe 13.

res = (x + d + (31*m) div 12 + (5*a) div 4 - (3*(1 + a div 100) div 4)) mod 7.

Se você não quiser envolver valores grandes no cálculo, então utilize a expressão:

res = (x + d + 2*m + (7*m) div 12 + a mod 7 + a div 4 mod 7 - (3*(1 + a div 100)) div 4 mod 7) mod 7.

No algoritmo d = dia, m = mês, a = ano e para res existe a seguinte correspondência:

res dia da semana
0 sábado
1 domingo
2 segunda-feira
3 terça-feira
4 quarta-feira
5 quinta-feira
6 sexta-feira

Links externos:

Utilizando o algoritmo acima faça um programa em C que elabora um calendário. Para um ano e mês fornecidos pelo usuário via teclado o programa deve imprimir no terminal o calendário do mês correspondente, conforme o exemplo abaixo.

Exemplo de Entrada:
2007 4

Exemplo de Saída:

/===========================\
| ABR                  2007 |
=============================
|DOM|SEG|TER|QUA|QUI|SEX|SAB|
|---+---+---+---+---+---+---|
|  1|  2|  3|  4|  5|  6|  7|
|  8|  9| 10| 11| 12| 13| 14|
| 15| 16| 17| 18| 19| 20| 21|
| 22| 23| 24| 25| 26| 27| 28|
| 29| 30|   |   |   |   |   |
\===========================/

Observações:
O objetivo dessa atividade é treinar o uso de laços (while,for). Logo, você deve usar laços sempre que possível! Não use coisas do tipo: printf("|---+---+---+---+---+---+---|");


AVISO: Esta página não é uma publicação oficial da UNICAMP. A responsabilidade por seu conteúdo é exclusivamente do autor.
DISCLAIMER: This is a personal page, and not an official UNICAMP page. Its contents are of entire responsibility of Paulo Miranda.