Ir ao conteúdo
  • Cadastre-se

davi pavezi wilke

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. pessoal, sou universitário, e esse trabalho é para ajudar na avaliação final, eu fiz ele, só que não esta dando certo: 1- quando mostra os meses na tela, janeiro sempre pula um dia 2- contador de ano bissexto não consegui arrumar alguem pode me ajudar a arrumar o código? #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define LINHAS 5 #define COLUNAS 7 void imprimir_dia_semana(int dia){ switch(dia){ case 1: printf("Dom"); break; case 2: printf("Seg"); break; case 3: printf("Ter"); break; case 4: printf("Qua"); break; case 5: printf("Qui"); break; case 6: printf("Sex"); break; case 7: printf("Sab"); break; default: printf("Impossivel imprimir.\n"); } } void imprimir_mes(int mes){ switch(mes){ case 1: printf("\tJaneiro\n\n"); break; case 2: printf("\tFevereiro\n\n"); break; case 3: printf("\tMarco\n\n"); break; case 4: printf("\tAbril\n\n"); break; case 5: printf("\tMaio\n\n"); break; case 6: printf("\tJunho\n\n"); break; case 7: printf("\tJulho\n\n"); break; case 8: printf("\tAgosto\n\n"); break; case 9: printf("\tSetembro\n\n"); break; case 10: printf("\tOutubro\n\n"); break; case 11: printf("\tNovembro\n\n"); break; case 12: printf("\tDezembro\n\n"); break; default: printf("Numero invalido!\n"); } } void calcular_dia_semana(int* dia_semana,int ano,int* bisexto){ int mes_atual,ano_atual,dia,flag = 0; (*dia_semana) = 1; *bisexto = 0; for(ano_atual = 1; ano_atual < ano;ano_atual ++){ *bisexto = *bisexto + 1; for(mes_atual = 1;mes_atual <= 12;mes_atual++){ for(dia = 1;dia <32;dia++){ if(mes_atual < 8 && mes_atual % 2 != 0 || mes_atual >= 8 && mes_atual % 2 == 0){ if(dia == 32){ break; } } else{ if(mes_atual == 2){ if( *bisexto == 4 ){ if(dia > 29){ *bisexto = 0; break; } } else{ if(dia > 28){ break; } } } if(dia == 31){ break; } } flag++; if( (*dia_semana) < 7 ){ (*dia_semana) = (*dia_semana) + 1; } else{ (*dia_semana) = 1; } } } } *bisexto = *bisexto + 1; printf("Rodei %d vezes\n",flag); imprimir_dia_semana(*dia_semana); printf("\n"); } void exibir_calendario(int dia_semana,int ano,int bisexto){ int i,j,mes,dia = 1,flag = 1,dia_semana_atual = dia_semana; for(mes = 1;mes <= 12;mes ++ ){ imprimir_mes(mes); for(i = 1;i <= COLUNAS;i ++){ imprimir_dia_semana(i); } printf("\n"); for(i = 0;i < LINHAS;i ++){ for(j = 0;j < COLUNAS;j ++){ //se é a primeira linha e o flag é menor que o dia da semana if(i == 0 && flag < dia_semana ){ printf(" |"); flag++; j = -1; continue; } if( j == (7 - dia_semana) ){ printf("\n"); } if( dia < 9) printf("%d ",dia); else printf("%d ",dia); dia++; if(mes < 8 && mes % 2 != 0 || mes >= 8 && mes %2 == 0){ if(dia == 32){ break; } } else{ if(mes == 2){ if(bisexto){ if(dia > 29){ flag = 0; dia_semana = dia_semana_atual; bisexto = 0; break; } }else{ if(dia > 29){ flag = 0; dia = 1; dia_semana = dia_semana_atual; break; } } } if(dia == 31){ break; } } //incrementando dia da semana if( (dia_semana_atual) < 7 ){ dia_semana_atual++; } else{ (dia_semana_atual) = 1; } } } printf("\n\n"); flag = 0; dia = 1; dia_semana = dia_semana_atual; } } main(){ int dia_semana,ano,bisexto;//1 = domingo 2 = segunda ... printf("Ano: "); scanf("%d",&ano); calcular_dia_semana(&dia_semana,ano,&bisexto); if(bisexto == 4) bisexto = 1; else bisexto = 0; exibir_calendario(dia_semana,ano,bisexto); return 0; } pedidos urgentes e sinceros de um acadêmico que não quer rodar mais uma vez nessa cadeira, valeu!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!