Submit | All submissions | Best solutions | Back to list |
EDUPT18 - calendario |
O objetivo deste trabalho é praticar o uso de listas circulares e funções, para isso deve-se desenvolver um programa que ao receber um ano (ex. 2005) seja capaz de mostrar na tela o calendário do ano informado em um formato mais próximo possível do mostrado abaixo:
Orientações para o desenvolvimento:
a) Escreva uma função que receba como argumento o ano e retorne 1 se for um ano bissexto e 0 se não for um ano bissexto. Um ano é bissexto se for divisível por 4, mas não por 100. Um ano também é bissexto se for divisível por 400.
b) Escreva uma função que receba dia, mês e ano e calcule o dia da semana. Esta função retorna 0 se for domingo, 1 se for segunda-feira, etc... Para calcular o dia da semana use o código a seguir no qual o dia da semana está na variável f:
int f = ano + dia + 3 * (mês - 1) - 1;
if (mês < 3) ano--;
else f -= (int)(0.4 * mês + 2.3);
f += (int)(ano/4) - int((ano/100 + 1) * 0.75);
f %= 7;
c) Escreva uma função que solicite ao usuário um ano e imprima o calendário desse ano. Utilize as funções dos dois exercícios anteriores, lembrando que os números de dias de janeiro a dezembro são respectivamente 31, 28/29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31.
d) Escreva funções para tratar a questão da apresentação dos dados.
e) Nomes e valores de meses, dias da semana e dias do mês devem ser armazenados em listas circulares.
Added by: | IFTM_Maratona |
Date: | 2023-05-12 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | C |