/ Este programa calcula qual dia da semana foi um determinado dia
/ Este programa no usa o calendrio do computador */ #include <stdio.h> #include <stdlib.h> int long int char
dia, mes, a, m, d, bissexto, erro_fev_bisxt,i;
ano, y, q; mes_nome[12][10]={"Janeiro0", "Fevereiro0", "Marco0", "Abril0", "Maio0", "Junho0", "Julho0", "Agosto0", "Setembro0", "Outubro0", "Novembro0", "Dezembro0"};
int main(int argc, char *argv[])
{ system("color f0"); system("title Dia Da Semana"); printf(" Programa que verifica o dia da semana "); printf("- Desenvolvido por Leandro da Silva\n\n\n"); while(1){ //loop principal //Pede a data e verifica se ela valida do{ do{ do{ printf("Entre com o dia\n"); scanf("%d",&dia); }while(dia>31 | dia<1); //volta a pedir o dia se dia>31 ou dia<1; printf("Entre com o mes (o numero do mes, nao o nome)\n"); scanf("%d",&mes); if(mes==2 & dia>29){ printf("\nFevereiro nao possui o dia %d!!!\n", dia); printf("--------------------------------\n\n"); mes=0;} if((mes==4 | mes==6 | mes==9 | mes==11) & dia>30){ printf("\nO mes 0%d so vai ate o dia 30!!!\n",mes); printf("--------------------------------\n\n"); mes=0;} }while(mes>12 | mes<1); //volta a pedir o dia e o mes caso estejam errados; bissexto=0; erro_fev_bisxt=0; printf("Entre com o ano\n"); scanf("%Lu",&ano); if(ano>1582 & ((ano%4==0) & (ano%100!=0) | (ano%400==0))) bissexto=1; if(bissexto & mes==2 & dia>28){ printf("ano bissexto, fevereiro nao tem 29 dias!!!\n"); printf("--------------------------------\n\n"); erro_fev_bisxt=1; } }while(ano<0 | erro_fev_bisxt);
system("cls"); //limpa a tela
//O cdigo abaixo imprime a data printf("%d/",dia); for(i=0;i<13;i++){ printf("%c",mes_nome[mes-1][i]); if(mes_nome[mes-1][i+1]=='0')i=13; } printf("/%d ----> ",ano); //cdigo para o clculo do dia da semana //*********************************************************************** a=(14-mes)/12; //* y=ano-a; //* m=mes+12*a-2; //* //* //O calend Gregoriano ou Juliano?(antes de 4 de outubro de 1582); //* //* if(ano>1582 | (ano==1582 & mes>10) | (ano==1582 & mes==10 & dia>=4)) //* q=dia+31*m/12+y+y/4-y/100+y/400; //* else //* q =dia + 31*m/12 + y + y/4 + 5; //* //* //calcula o dia da semana; //* //* d=q%7; //* //*********************************************************************** switch(d){ case 1: printf("segunda feira\n"); break; case 2: printf("terca feira\n"); break; case 3: printf("quarta feira\n"); break; case 4: printf("quinta feira\n"); break; case 5: printf("sexta feira\n"); break; case 6: printf("sabado\n"); break; case 0: printf("domingo\n"); break; } if(bissexto)printf("\nO ano %d e' bissexto\n",ano); printf("_________________________________________________________\n\n\n"); } return 0; } //NOTAS: //Falta verificar se um ano antes de 1582 bissexto. //A entrada de meses com palavras da erro