Ir para conteúdo

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 Eduardo M
      Olá galera, tudo bem? 
      Estou precisando de uma ajuda de vocês acontece, que eu estou criando um calendário, porem esse calendário não passa o ano quando eu aperto as setas pro lado!
      Vou disponibilizar os códigos para  alguém me ajudar pois estou precisando muito deste calendário!
       
      calendario.php
      <?php function num($num){ return ($num < 10) ? '0'.$num : $num; } function montaEventos($info){ global $pdo; //tabela, data, titulo $tabela = $info['tabela']; $data = $info['data']; $titulo = $info['titulo']; $link = $info['link']; $vagas = $info['vagas']; $eventos = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `".$data."` "); $eventos->execute(); $retorno = array(); while($row = $eventos->fetchObject()){ $dataArr = date('Y-m-d', strtotime($row->{$data})); $retorno[$dataArr] = array( 'titulo' => $row->{$titulo}, 'link' => $row->{$link}, 'vagas' => $row->{$vagas} ); } return $retorno; } function diasMeses(){ $retorno = array(); for($i = 1; $i<=12;$i++){ $retorno[$i] = cal_days_in_month(CAL_GREGORIAN, $i, date('Y')); } return $retorno; } function montaCalendario($eventos = array()){ $daysWeek = array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); $diasSemana = array( 'Dom', 'Seg', 'Ter', 'Qua', 'Qui', '---', 'Sab' ); $arrayMes = array( 1 => 'Janeiro', 2 => 'Fevereiro', 3 => 'Março', 4 => 'Abril', 5 => 'Maio', 6 => 'Junho', 7 => 'Julho', 8 => 'Agosto', 9 => 'Setembro', 10 => 'Outubro', 11 => 'Novembro', 12 => 'Dezembro' ); If($_GET['mes'] and $_GET['ano']) { $mes = $_GET['mes']; $ano = $_GET['ano']; } Else { $mes = date("m"); $ano = date("Y"); } $t_mes = date("t", mktime(0, 0, 0, $mes, 1, $ano)); $mes_ant = date("m", mktime(0, 0, 0, $mes, 0, $ano)); $ano_ant = date("Y", mktime(0, 0, 0, $mes, 0, $ano)); $mes_post = date("m", mktime(0, 0, 0, $mes, $t_mes+1, $ano)); $ano_post = date("Y", mktime(0, 0, 0, $mes, $t_mes+1, $ano)); $diasMeses = diasMeses(); $arrayRetorno = array(); for($i =1; $i <= 12; $i++){ $arrayRetorno[$i] = array(); for($n=1; $n<= $diasMeses[$i]; $n++){ $dayMonth = gregoriantojd($i, $n, date('Y')); $weekMonth = substr(jddayofweek($dayMonth, 1),0,3); if($weekMonth == 'Mun') $weekMonth = 'Mon'; $arrayRetorno[$i][$n] = $weekMonth; } } echo '<a href="#" id="volta">&laquo;</a><a href="#" id="vai">&raquo;</a>'; echo '<table border="0" width="100%">'; foreach($arrayMes as $num => $mes){ echo '<tbody id="mes_'.$num.'" class="mes">'; echo '<tr class="mes_title"><td colspan="7">'.$mes.' - '.date('Y').'</td></tr>'; echo '<tr class="dias_title">'; foreach($diasSemana as $i => $day){ echo '<td>'.$day.'</td>'; } echo '</tr><tr>'; $y = 0; foreach($arrayRetorno[$num] as $numero => $dia){ $y++; if($numero == 1){ $qtd = array_search($dia, $daysWeek); for($i=1; $i<=$qtd; $i++){ echo '<td></td>'; $y+=1; } } if(count($eventos) > 0){ $month = num($num); $dayNow = num($numero); $date = date('Y').'-'.$month.'-'.$dayNow; if(in_array($date, array_keys($eventos))){ $evento = $eventos[$date]; if($evento['vagas'] <> 0){ echo '<td class="evento2"><a class="dcontexto" href="'.$evento['link'].'" target="_parent">'.$numero.'<span>Vagas '.$evento['vagas'].'</span></a></td>'; }else{ echo '<td class="evento1"><a class="dcontexto" target="_parent">'.$numero.'<span> Não há mais Vagas</span></a></td>';} }else{ echo '<td class="dia_'.$numero.'" ><a href="../../agenda.php?data='.$numero.'-'.$mes.'" class="numeros" target="_parent">'.$numero.'</a></td>'; } }else{ echo '<td class="dia_'.$numero.'">'.$numero.'</td>'; } if($y == 7){ $y=0; echo '</tr><tr>'; } } echo '</tr></tbody>'; } echo '</table>'; } ?> e na minha duvida e no JS
       
      js/functions.js
      $(function(){ var data = new Date(); var mesAtual = data.getMonth()+1; var diaAtual = data.getDate(); var anoAtual = data.getFullYear(); var dataAtual = diaAtual+'/'+mesAtual+'/'+anoAtual; var contCalendario = 0; $('#mes_'+mesAtual).show().find('.dia_'+diaAtual).addClass('atual'); function hideShow(){ if(mesAtual > 12){ mesAtual = 1; anoAtual = +1; }else if(mesAtual < 1){ mesAtual = 12; anoAtual = -1; } $('.mes').hide(); $('#mes_'+mesAtual).show(); } $('#vai').on('click', function(e){ e.preventDefault(); mesAtual++; hideShow(); return false; }); $('#volta').on('click', function(e){ e.preventDefault(); mesAtual--; if(mesAtual < 1){ anoAual - -1;} hideShow(); return false; }); }); eu acho que estou errando no JAVASCRIPT
       
      para quem for me ajudar vou deixar o link do calendário.
      http://www.nebbclean.com.br/calendario.rar
       
      Agradeço!

      Att,
      Eduardo Moura
    • 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
×

Informação importante

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