Você está na página 1de 2

/* Programa escrito por Leandro da Silva

/ 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

Você também pode gostar