Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef enum {
- janeiro = 1,
- fevereiro,
- marco,
- abril,
- maio,
- junho,
- julho,
- agosto,
- setembro,
- outubro,
- novembro,
- dezembro
- } TMes;
- bool bissexto( int ano) {
- return ( ano % 100 != 0 and ano % 4 == 0) or ( ano % 400 == 0);
- }
- char dias_em_um_mes( char mes, int ano) {
- switch( TMes( mes)) {
- case janeiro:
- case marco:
- case maio:
- case julho:
- case agosto:
- case outubro:
- case dezembro:
- return 31;
- case abril:
- case junho:
- case setembro:
- case novembro:
- return 30;
- default:
- return ( bissexto( ano) ? 29 : 28);
- }
- }
- int numero_do_dia_no_ano( char dia, char mes, int ano) {
- int acumulador = 0, contador;
- for( contador = 1; contador < mes; contador++)
- acumulador += dias_em_um_mes( contador, ano);
- return acumulador + dia;
- }
- int numero_do_dia_no_ano_2( char dia, char mes, bool bissexto) {
- static int meses[] = { 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
- return dia + meses[ mes] + ( bissexto and mes > 2 ? 1 : 0 );
- }
- int main( void) {
- printf( "%d\n", numero_do_dia_no_ano( 1, 1, 2012));
- printf( "%d\n", numero_do_dia_no_ano( 1, 2, 2012));
- printf( "%d\n", numero_do_dia_no_ano( 1, 3, 2012));
- printf( "%d\n", numero_do_dia_no_ano( 10, 11, 2012));
- printf( "\n");
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 1, bissexto(2012)));
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 2, bissexto(2012)));
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 3, bissexto(2012)));
- printf( "%d\n", numero_do_dia_no_ano_2( 10, 11, bissexto(2012)));
- printf( "\n");
- printf( "%d\n", numero_do_dia_no_ano( 1, 1, 2013));
- printf( "%d\n", numero_do_dia_no_ano( 1, 2, 2013));
- printf( "%d\n", numero_do_dia_no_ano( 1, 3, 2013));
- printf( "%d\n", numero_do_dia_no_ano( 10, 11, 2013));
- printf( "\n");
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 1, bissexto(2013)));
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 2, bissexto(2013)));
- printf( "%d\n", numero_do_dia_no_ano_2( 1, 3, bissexto(2013)));
- printf( "%d\n", numero_do_dia_no_ano_2( 10, 11, bissexto(2013)));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement