Ir ao conteúdo
  • Cadastre-se

C Exercício em C calendário


Vitor Potter

Posts recomendados

Fala galera! Estou fazendo um trabalho de algoritmos. O objetivo é fazer um algoritmo que recebe o ano e como saída da a data da Páscoa, Carnaval e Corpus Christi. Porém o Corpus Christi sempre da 2 dias a mais, como se a estrutura for sempre repetisse mais 2 vezes (o Corpus é 60 dias após a Páscoa). Alguém sabe o que tem de errado? segue a parte do código que está a parte que deve estar o erro: (só botei a parte do erro por que as outras duas datas está tendo a saída correta, as variáveis mes e dia são a data da Pascoa)

 //CONTAGEM CORPUS CHRISTI 
    int y,diacorpus,mescorpus;

    for (y=0 ; y<60 ; y++){

        // Se não for final de mes, soma um dia
        if ( ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia!=31)) || ((mes == 6 ||mes == 9 || mes== 11 || mes==4) & (dia != 30)) || (mes==2 && contbissexto==0 && dia!=28) || (mes == 2 && contbissexto == 1 && dia != 29) ){
             dia++;

             }
             // Se for final de mês,soma um mês e muda o dia
         if ( ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia==31)) || ((mes == 6 || mes == 9 || mes== 11 || mes==4) & (dia == 30)) || (mes==2 && contbissexto==0 && dia==28) || (mes == 2 && contbissexto == 1 && dia == 29)){
                 mes++;
                 dia=1;
             }

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Vitor Potter     seu código tem hum erro, que é nessa linha aqui :

dia=1;

então quando passa de mês essa variável vai para 1 e depois no if de cima ele soma um á essa variável passando para dois quando deveria ser hum,  então para acertar coloque o valor igual a zero assim :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main (){
    int y,diacorpus,mescorpus;
    int dia=16,mes=4,contbissexto=0;
    for (y=0 ; y<60 ; y++){
        /*// Se não for final de mes, soma um dia*/
        if ( ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia!=31))
            || ((mes == 6 ||mes == 9 || mes== 11 || mes==4) && (dia != 30)) || (mes==2 && contbissexto==0 && dia!=28)
            || (mes == 2 && contbissexto == 1 && dia != 29) ){
            printf("valor de dia %d - mes %d\n",dia,mes);
            dia++;
        }
        /*// Se for final de mês,soma um mês e muda o dia*/
        if ( ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia==31))
            || ((mes == 6 || mes == 9 || mes== 11 || mes==4) && (dia == 30)) || (mes==2 && contbissexto==0 && dia==28)
            || (mes == 2 && contbissexto == 1 && dia == 29)){
            printf("aqui no segundo ------> mes %d\n",mes);
            mes++;
            dia=0;
        }
    }
    printf("\n\nA Pascoa Esse Ano Sera de Dia %d do  Mes %d ",dia,mes);
    return 0;
}

coloquei essa data desse ano para testar, então aí no seu código substitua pelos valores que você vai usar.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!