Skip to content

Instantly share code, notes, and snippets.

@thales-assis
Last active April 22, 2024 23:57
Show Gist options
  • Save thales-assis/f1d8dc868ae6cc971bd6c87c2aec1118 to your computer and use it in GitHub Desktop.
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++
#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