Last active
April 22, 2024 23:57
-
-
Save thales-assis/f1d8dc868ae6cc971bd6c87c2aec1118 to your computer and use it in GitHub Desktop.
Como descobrir dia da Semana de uma determinada Data ( How to find out the weekday of a given date ) DEV C++
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstdlib> | |
using namespace std; | |
// --- Função Auxiliar --- | |
void equacao(); | |
// --- Variáveis Globais --- | |
int dia, mes, ano, dia_semana, formula; | |
main() // Função Principal - Loop Infinito. | |
{ | |
string resposta = ""; | |
while(resposta !="nao") | |
{ | |
system("CLS"); | |
cout << "A seguir, digite uma data do calendario Gregoriano para saber seu respectivo dia da semana. \n\n"; | |
cout << "Dia: "; cin >> dia; cout << "\n"; | |
cout << "Mes: "; cin >> mes; cout << "\n"; | |
cout << "Ano: "; cin >> ano; cout << "\n"; | |
// Verifica se é um ano Bissexto, se o dia está entre ( 01- 31 ) e o mês está entre ( 01 - 12 ) | |
if( (ano % 4 == 0 && (ano % 400 == 0 || ano % 100 != 0)) && (dia > 0 && dia <=31) && (mes >0 && mes <=12) ) | |
{ | |
// Verifica se os meses de até 30 dias não estão corretos. | |
if(mes == 2 && dia > 29 || mes == 4 && dia>30 || mes == 6 && dia>30 || mes == 9 && dia>30 || mes == 11 && dia>30 ) | |
{ | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " nao existe no calendario Gregoriano. \n\n"; | |
exit; | |
} | |
else equacao(); // se estiverem corretos, executa a equação para achar o dia da semana. | |
} // Final do if | |
// Verifica se não é um ano Bissexto, se o dia está entre ( 01- 31 ) e o mês está entre ( 01 - 12 ) | |
else if( !(ano % 4 == 0 && (ano % 400 == 0 || ano % 100 != 0)) && (dia > 0 && dia <=31) && (mes >0 && mes <=12) ) | |
{ | |
// Verifica se os meses de até 30 dias não estão corretos. | |
if(mes == 2 && dia > 28 || mes == 4 && dia>30 || mes == 6 && dia>30 || mes == 9 && dia>30 || mes == 11 && dia>30 ) | |
{ | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " nao existe no calendario Gregoriano. \n\n"; | |
exit; | |
} | |
else equacao(); // se estiverem corretos, executa a equação para achar o dia da semana. | |
} // Final do else if | |
// Se a data não existir no calendário gregoriano. | |
else cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " nao existe no calendario Gregoriano. \n\n"; | |
cout << "Quer tentar novamente?(sim/nao)\n"; cin >> resposta; | |
} | |
cout << "Desenvolvedor do Programa: Thales Lima de Assis\n\n"; | |
_sleep(2000); | |
system("PAUSE"); | |
} // Fim da Função Principal. | |
void equacao() | |
{ | |
if(mes == 01 ) // mês de janeiro será o mês 13 do ano anterior. | |
{ | |
mes = 13; | |
ano = ano - 1; | |
} | |
if(mes == 02 ) // mês de favereiro será o mês 14 do ano anterior. | |
{ | |
mes = 14; | |
ano = ano - 1; | |
} | |
formula = dia + 2*mes + (3*(mes+1)/5) + ano + ano/4 - ano/100 + ano/400 + 2; // Formula para calcular o dia da semana. | |
dia_semana = formula % 7; // Resto da divisão do valor encontrado na formula por 7. | |
if (mes == 13) // Se for mês de Janeiro, coloca o valor certo do Mês e do Ano para mostrar na tela. | |
{ | |
mes = 1; | |
ano = ano+1; | |
} | |
if (mes == 14) // Se for mês de Fevereiro, coloca o valor certo do Mês e do Ano para mostrar na tela. | |
{ | |
mes = 2; | |
ano = ano +1; | |
} | |
switch(dia_semana) // Switch case para saber qual dia da semana é. | |
{ | |
case 0:// é um Sábado(Saturday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em um Sabado(Saturday)\n\n"; | |
break; | |
case 1:// é um Domingo(Sunday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em um Domingo(Sunday)\n\n"; | |
break; | |
case 2:// é uma segunda-feira(Monday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em uma Segunda-feira(Monday)\n\n"; | |
break; | |
case 3:// é uma terça-feira(Tuesday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em uma Terca-feira(Tuesday)\n\n"; | |
break; | |
case 4:// é uma quarta-feira(Wednesday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em uma Quarta-feira(Wednesday)\n\n"; | |
break; | |
case 5:// é uma quinta-feira(Thursday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em uma Quinta-feira(Thursday)\n\n"; | |
break; | |
case 6:// é uma Sexta-feira(Friday). | |
cout << "A data " << dia <<"/"<< mes <<"/"<< ano << " cai em uma Sexta-feira(Friday)\n\n"; | |
break; | |
} // fim do switch case. | |
} // Fim da função Equação. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment