Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Frederico Neto

Programação C

Recommended Posts

Bom , eu preciso fazer um programa que solicite ao usuário um ano e imprima o calendário deste ano. Este programa deverá conter uma função que receba um ano como argumento e retorne o dia, mês em que foi o feriado da páscoa.Esta função deverá ser utilizada para elaborar as funções que calcule os feriados móveis: sexta feira santa, carnaval e Corpus Christi.

 

 

-----------------------------------------------------------------------------------------------------------------------

eu consegui esse código mais ainda não consigo chegar no resultado esperado , preciso de ajuda.

 

-----------------------------------------------------------------------------------------------------------------------

 

 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 int i;
 int mes, ano;
 int dias;
 int dia_da_semana;
 int dias_no_mes;
 char *meses[] = { "JANEIRO", "FEVEREIRO", "MARCO", "ABRIL", "MAIO", "JUNHO",
                   "JULHO", "AGOSTO", "SETEMBRO", "OUTUBRO", "NOVEMBRO", "DEZEMBRO" };

/*----Entrada de dados. */

 printf( "Calendário:\n" );

 do /* Repete até teclar ano entre 1901 e 2099. */
 {
   printf( "\nEntre com o ano (1901-2099):  " );
   scanf( "%d", &ano );
 }
 while( ano < 1901 || ano > 2099 );

 do /* Repete até teclar mes entre 1 e 12.      */
 {
   printf( "\nEntre com o mes (1-12):  " );
   scanf( "%d", &mes );
 }
 while( mes < 1 || mes > 12 );

/*----Calcula o numero de dias entre 1/1/1901 e 1/mes/ano. */

 dias  = 365 * ( ano - 1901 );   /* dias entre 01/01/1901 e 31/12/(ano-1)                   */
 dias += ( ano - 1901 ) / 4;     /* dias de anos bissextos entre 01/01/1901 e 31/12/(ano-1) */
 switch( mes )
 {
   case 12: dias += 30; /* soma os dias do mes de novembro. */
   case 11: dias += 31; /* soma os dias do mes de outubro.  */
   case 10: dias += 30; /* soma os dias do mes de setembro. */
   case 9:  dias += 31; /* soma os dias do mes de agosto.   */
   case 8:  dias += 31; /* soma os dias do mes de julho.    */
   case 7:  dias += 30; /* soma os dias do mes de junho.    */
   case 6:  dias += 31; /* soma os dias do mes de maio.     */
   case 5:  dias += 30; /* soma os dias do mes de abril.    */
   case 4:  dias += 31; /* soma os dias do mes de março.    */
   case 3:  if( ano % 4 == 0 ) /* ano%4==0 -> ano bissexto. */
              dias += 29;
            else
              dias += 28;
   case 2:  dias += 31; /* soma os dias do mes de janeiro.  */
   case 1:  break;
 }

/*----Calcula o dia da semana de 1/mes/ano. 0= domingo, 1=segunda, ... 6=sabado */

 dia_da_semana = ( 2 + dias ) % 7; /* 1/1/1901 foi terca-feira. */

/*----Calcula o número de dias no mes. */

 switch( mes )
 {
   case 12: dias_no_mes = 31; /* dias do mes de dezembro. */
            break;
   case 11: dias_no_mes = 30; /* dias do mes de novembro. */
            break;
   case 10: dias_no_mes = 31; /* dias do mes de outubro.  */
            break;
   case 9:  dias_no_mes = 30; /* dias do mes de setembro. */
            break;
   case 8:  dias_no_mes = 31; /* dias do mes de agosto.   */
            break;
   case 7:  dias_no_mes = 31; /* dias do mes de julho.    */
            break;
   case 6:  dias_no_mes = 30; /* dias do mes de junho.    */
            break;
   case 5:  dias_no_mes = 31; /* dias do mes de maio.     */
            break;
   case 4:  dias_no_mes = 30; /* dias do mes de abril.    */
            break;
   case 3:  dias_no_mes = 31; /* dias do mes de março.    */
            break;
   case 2:  if( ano % 4 == 0 ) /* ano%4==0 -> ano bissexto. */
              dias_no_mes = 29;
            else
              dias_no_mes = 28;
            break;
   case 1:  dias_no_mes = 31; /* dias do mes de janeiro.  */
            break;
 }

 printf( "%15s/%d\n", meses[ mes - 1 ], ano );
 printf( " D  S  T  Q  Q  S  S\n" );
 for( i = 0; i < dia_da_semana; i++ )
   printf( "   " );

 for( i = 1; i <= dias_no_mes; i++ )
 {
   printf( "%2d ", i );
   if( ++dia_da_semana == 7 )
   {
     dia_da_semana = 0;
     printf( "\n" );
   }
 }

 printf( "\n" );

 system("PAUSE");
 return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

switch( mes )
{
case 12: dias += 30; /* soma os dias do mes de novembro. */
case 11: dias += 31; /* soma os dias do mes de outubro. */
case 10: dias += 30; /* soma os dias do mes de setembro. */
case 9: dias += 31; /* soma os dias do mes de agosto. */
case 8: dias += 31; /* soma os dias do mes de julho. */
case 7: dias += 30; /* soma os dias do mes de junho. */
case 6: dias += 31; /* soma os dias do mes de maio. */
case 5: dias += 30; /* soma os dias do mes de abril. */
case 4: dias += 31; /* soma os dias do mes de março. */
case 3: if( ano % 4 == 0 ) /* ano%4==0 -> ano bissexto. */
dias += 29;
else
dias += 28;
case 2: dias += 31; /* soma os dias do mes de janeiro. */
case 1: break;
}

 

Esta parte esta confusa, falta os break dos cases.

Compilou este código? qual o resultado??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resultado = ele pede para digitar o ano , em seguida o més ai ele mostra tudo certinho, mas preciso que ele mostre todo o calendário do ano com as datas comemorativas em evidencia , mas não estou conseguindo , pode me ajudar ?

 

------------------

 

Essa parte ai é a somatória dos meses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.