Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ern1955

erro nas datas código do calendário

Recommended Posts

Boa noite a todos, eu estudo c++ através de video aula, e num exercício que é fazer um calendário anual, eu digito o ano, e apenas o primeiro mês esta correto, os outros meses os dias que correspondem a semana esta certo mais nos dias trocados, gostaria de saber se alguém poderia me ajudar, onde eu estou errando!

 

#include<iostream>

#include <iomanip>

 

/*

Dados dia, mês e ano de uma data gregoriana, escreva uma função que converta essa data para data juliana correspondente. Use a seguinte fórmula:

Data juliana = (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075.

 

Escreva uma função que receba dia, mês e ano e calcule o dia da semana em que caiu essa data. Para isso, basta transformar a data gregoriana em

juliana e calcular o resto da divisão da data juliana por 7. A função deverá retornar um número entre 0 e 6 indicando os seguintes resultados:

0 - Segunda-feira

1 - Terça-feira

2 - Quarta-feira

3 - Quinta-feira

4 - Sexta-feira

5 - Sábado

6 - Domingo

 

Faça um calendario anual

 

*/

using namespace std;

 

int juliana(int dia, int mes, int ano);

int diadasemana(int numero);

string meses(int m);

int dia_mes(int a);

bool bissexto(int n);

void calendario(int num, int d);

 

static int ano;

 

int main(){

 

setlocale(LC_ALL, "Portuguese");

 

int conv=0;

int diames=0;

 

cout<<"Ano: ";

cin>>ano;

cout<<endl;

 

for(int mes=1; mes<=12; mes++){

diames = dia_mes(mes);

cout<<meses(mes);

cout<<"\nSeg Ter Qua Qui --- Sab Dom\n";

for(int dia=1; dia<=diames; dia++){

 

conv = diadasemana(juliana(dia, mes, ano));

 

calendario(conv, dia);

 

if(dia % 7 == 0){

 

cout<<endl;

 

}

 

}

 

cout<<endl;

 

}

 

return 0;

}

 

//-------------------------------------------------------//

 

void calendario(int num, int d){

 

switch(num){

 

case 0:

printf("%3d ", d);

break;

 

case 1:

printf("%3d ", d);

 

break;

case 2:

printf("%3d ", d);

break;

 

case 3:

printf("%3d ", d);

break;

 

case 4:

printf("%3d ", d);

break;

 

case 5:

printf("%3d ", d);

break;

 

case 6:

printf("%3d ", d);

break;

 

}

 

 

}

 

//-------------------------------------------------------//

 

int juliana(int dia, int mes, int ano){

 

return (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075;

 

}

 

//-------------------------------------------------------//

 

int diadasemana(int numero){

 

return numero % 7;

}

 

//-------------------------------------------------------//

 

string meses(int m){

 

switch(m){

 

case 1: return "Janeiro";

 

case 2: return "\nFevereiro";

 

case 3: return "\nMarço";

 

case 4: return "\nAbril";

 

case 5: return "\nMaio";

 

case 6: return "\nJunho";

 

case 7: return "\nJulho";

 

case 8: return "\nAgosto";

 

case 9: return "\nSetembro";

 

case 10: return "\nOutubro";

 

case 11: return "\nNovembro";

 

default: return "\nDezembro";

 

}

}

 

//-------------------------------------------------------//

 

 

int dia_mes(int a){

 

if(a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12){

 

return 31;

 

}else if(a == 2){

 

if(bissexto(ano) == true){

 

return 29;

 

}else{

 

return 28;

 

}

 

 

}else{

 

return 30;

}

}

 

//-------------------------------------------------------//

 

bool bissexto(int n){

 

if((n % 4 == 0) &&

(n % 100 != 0)){

 

return true;

 

}else if(n % 400 == 0){

 

return true;

 

}else{

 

return false;

}

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • Por Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • Por Pedro S.
      Conheço pouco de PHP e, de ultima hora, estou tendo que fazer um sistema de agendamento para barbearias como projeto. O sistema teria um calendário com os dias, meses e ano, onde o usuário poderia clicar no dia que desejasse, se disponível, e escolher o horário que desejasse, também se disponível. Todo o resto do site já foi feito, essa é única parte que não tenho noção de como fazer. 
    • Por fdesign
      Boa tarde,
      Estou com uma grande duvida e dilema. Como poderei fazer para sincronizar o calendário google, com o meu email profissional? Na vez de usar o email @gmail.com usar @minhaempresa.com
       
      Há alguma forma gratuita? E no android / ios a conta a ser utilizada é a profissional e não a do gmail.
       
      Obrigado amigos
    • Por tony_lu
      Ola pessoal, preciso de uma ajuda...estou usando um campo date onde o usuário seleciona a data no calendário e submete o formulário!
       
      <form method="post" id="form" name="form"> <input type="date" name="data" id="data" value=""> </form> Eu preciso que o usuario ao abrir o calendario e escolher o dia desejado, ao clicar ja submeta o formulario sem que precise clicar em um botão para enviar! Podem me ajudar?!
       
      Obrigado!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.