You are on page 1of 3

1 ALGORITMOS E PROGRAMACAO COMPUTACIONAL Laboratrio 02 (09/04/2012) o INFORMACOES IMPORTANTES 1.

1. Todos os programas devero ter o seguinte cabealho: a c /*************************************************************************** *** *** *** *** *** Grupo n.: Nome completo dos alunos que comp~e o grupo o LABORATORIO 2 *** *** *** *** ***

***************************************************************************/ 2. O exerc ser desenvolvido em grupos de 3 alunos. cio a 3. O nmero de cada grupo ser informado durante a aula. Guarde este nmero, pois ele ser u a u a usado para identicar os programas entregues via Moodle. 4. E importante que o programa tenha comentrios e esteja bem indentado, ou seja, digitado a de maneira a ressaltar a estrutura dos comandos (conforme visto em aula). A legibilidade do programa ser levada em conta durante a correo. a ca 5. Receber nota ZERO: a (a) o programa com erros de sintaxe, ou seja, erros de compilao ca (b) o programa que utilizar bibliotecas e funes nativas da linguagem C (i.e. pertencentes co a `s bibliotecas .h) que no foram abordadas em aula a (c) o grupo que enviar os arquivos aps a data e horrio estipulados o a 6. Data de entrega: at as 12:00 do dia 30/04/2012 e 7. Na data acima, voc dever entregar: e a (a) O cdigo fonte (arquivo .c) impresso, e a sa impressa correspondente a cada execuo o da ca do programa (4 a 5 simulaes so sucientes). Para imprimir os resultados das simco a ulaes, basta escrever as sa co das do programa em um editor de texto, ou seja, no a e necessrio imprimir a janela DOS com os resultados. O material na forma impressa a dever ser entregue at o nal da aula do dia 30/04/2012 (12:00 horas). a e (b) Um arquivo zipado contendo o cdigo fonte (arquivo com extenso .c). Este arquivo o a dever ser enviado via Moodle, at as 12:00 horas do dia 30/04/2012. O arquivo dever a e a e u ser identicado da seguinte forma: GRUPO XXX LAB01.zip, onde XXX o nmero do grupo fornecido durante o laboratrio. o

2 Em que dia da semana voc nasceu ? e

Um calendrio um sistema de organizao das unidades de tempo, com o objetivo de cont-las a e ca a por per odos longos, de modo a satisfazer as necessidades e preocupaes de uma sociedade. co Os calendrios sempre exerceram um papel importante para o planejamento da agricultura, nos a ciclos de migrao e nos eventos religiosos e civis. ca Alm de servir para propsitos prticos, esse processo de organizao, d um sentido, embora e o a ca a ilusrio, de compreenso e dom o a nio do tempo. Dessa forma, os calendrios servem como ligao a ca entre o Homem e o Cosmo e no de se estranhar que, ao longo da Histria, tenham tido um status a e o sagrado e servido como fonte de ordem social e de identidade cultural. Atualmente, existem cerca de 40 calendrios em uso em todo o mundo. Embora alguns sejam baseaa dos em ciclos astronmicos de acordo com regras xas, outros so baseados em ciclos repetitivos, o a sem nenhuma ligao com a astronomia. ca Para calendrios com base astronmica, a unidade fundamental pode ser o dia (baseado na rotao a o ca da Terra em torno de seu eixo), o ano (baseado na revoluo da Terra em torno do Sol) ou o ca ms (baseado na revoluo da Lua em torno da Terra). A complexidade desses calendrios e ca a e consequncia do fato de que esses ciclos no so constantes e nem comensurveis uns em relao e a a a ca aos outros. Suponhamos que vocs queira saber o dia da semana que voc nasceu. H vrias maneiras para e e a a isso, e que podem ser demonstradas matematicamente. A seguir, apresentada uma delas, cuja e demonstrao ser omitida por uma questo de brevidade. ca a a Inicialmente, considere o seu dia de nascimento, d/m/19xy, onde d o dia do ms, m o ms e x e e e e e y so algarismos entre 0 e 9. a Cada ms do ano associado a um cdigo. Se o ano no for bissexto, esses cdigos so dados pela e e o a o a sequncia 1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6, isto , ao ms de janeiro associamos o nmero e e e u 1; a fevereiro o nmero 4; a maro o nmero 4 e assim, sucessivamente. Se o ano for bissexto, a u c u sequncia muda apenas nos dois primeiros cdigos, ou seja, para anos bissextos, esses cdigos so e o o a dados pela sequncia 0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6. Lembrando que um ano bissexto e e se for mltiplo de 4, com excesso dos mltiplos de 100, que no so mltiplos de 400. Assim, 1900 u a u a a u no bissexto, mas 2000 bissexto. a e e Um sistema de codicao semelhante tambm adotado para identicar os dias da semana. Neste ca e e caso, os cdigos so dados pela sequncia 0, 1, 2, 3, 4, 5, 6, onde 0 associado ao sbado; 1 o a e e a associdado ao domingo, 2 associado ` segunda-feira, e assim por diante, at sexta-feira que e e a e e associdada ao nmero 6. u O dia da semana dado ento pelo resto da diviso Euclidiana de e a a xy + d + cdigo do ms o e 4 por 7. O resto resultante um nmero entre 0 e 6 o qual associamos com o dia da semana, conforme e u mencionado no pargrafo precedende. Repare que, como estamos trabalhando com nmeros inteiros, a u o resultado da diviso xy/4 dever ser truncada de modo a resultar em um nmero inteiro menor a a u ou igual ao quociente da diviso de xy por 4. Por exemplo: 87/4 = 21. a A expresso acima, vlida apenas para os dias dos anos de 1900 a 1999. Para os dias dos anos a e a 2000 a 2099 (i.e. 20xy), h uma pequena mudana. O dia da semana ser dado pelo resto da diviso a c a a Euclidiana de xy + xy + d + cdigo do ms 1 o e 4 por 7. O resto tambm ser um nmero entre 0 e 6 o qual associamos com o dia da semana. e a u O objetivo deste exerc desenvolver um programa que imprima um calendrio formatado, dado cio e a o ms e um ano entre 1900 e 2099. Isto , o programa dever imprimir: e e a xy +

3 1. um cabealho contendo os nomes abreviados do dia da semana (Dom Seg Ter Qua Qui Sex c Sab) 2. os dias do ms desejado formatados de acordo com o dia da semana em que eles caem. e Exemplos de sa da: Digite um m^s: 2 e Digite um ano entre 1900 e 2099: Dom 5 12 19 26 Seg 6 13 20 27 Ter 7 14 21 28 Qua 1 8 15 22 29 Qui 2 9 16 23 Sex 3 10 17 24 2012 Sab 4 11 18 25

Digite um m^s: 2 e Digite um ano entre 1900 e 2099: Dom 7 14 21 28 Seg 1 8 15 22 Ter 2 9 16 23 Qua 3 10 17 24 Qui 4 11 18 25 Sex 5 12 19 26

1915 Sab 6 13 20 27

Digite um m^s: 6 e Digite um ano entre 1900 e 2099: Dom 1 8 15 22 29 Seg 2 9 16 23 30 Ter 3 10 17 24 Qua 4 11 18 25 Qui 5 12 19 26 Sex 6 13 20 27

1947 Sab 7 14 21 28

Digite um m^s: 10 e Digite um ano entre 1900 e 2099: Dom 7 14 21 28 Seg 1 8 15 22 29 Ter 2 9 16 23 30 Qua 3 10 17 24 31 Qui 4 11 18 25 Sex 5 12 19 26

2018 Sab 6 13 20 27

Por m, voc pode (e deve) criar as funes que julgar necessrias para melhorar a legibilidade e co a do programa e reduzir a complexidade do problema. Por exemplo, voc pode criar uma funo e ca bissexto que receba como argumento o ano e retorne um ag indicando se o ano ou no bissexto. e a Contudo, lembre-se que, independentemente do nmero e da variedade de funes, um programa u co em C precisa possuir sempre a funo main(). ca

You might also like