Ir ao conteúdo
  • Cadastre-se

Ano Bissexto


Murrer

Posts recomendados

e ae, rapazeada!? então... tenho que fazer um programa que receba os valores de dia, mes e ano e que faça os testes pra ver se os valores estão nos intervalos certos de dia(de 1 a 31, 1 a 30, 1 a 29 ou 1 a 28 dependendo se é bissexto ou não, e do mes do ano), de mes(1 a 12) e de ano(1900 a 2100)...

o que eu fiz foi isso aí... vários "do"s e "while"s porque é o que eu to estudando no momento...

mas acontece que quando eu escolho o ano 2011 por exemplo(não é bissexto), ele tá falando que é bissexto!

alguém sabe o que tá errado?


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

int main(){
int d, m, a, bissexto=0, cont=0, ndia;
do{
printf("Insira o ano(1900-2100): \n\n");
scanf("%d", &a);
if(a>2100||a<1900){
printf("\nFavor escolher um numero de 1900 a 2100. \n\n");
}
}while (a>2100||a<1900);
if ((a % 4 == 0) && ((a%400==0)||(a % 100 != 0))){
printf("Ano Bissexto! \n\n");
bissexto = 1;}

do{
printf("Insira o mes: \n\n");
scanf("%d", &m);
if (m>12||m<1){
printf("\nFavor escolher um numero de 1 a 12. \n\n");
}
}while (m>12||m<1);
REFAZ:
printf("Insira o dia do mes: \n\n");
scanf("%d", &d);
if(d>31||d<1){
printf("\nFavor escolher um numero de 1 a 31. \n\n");
goto REFAZ;}
if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1)){
printf("\nFavor escolher um numero de 1 a 30. \n\n");
goto REFAZ;}
if(((bissexto==1)&&(m==2))&&((d<1)||(d>29))){
printf("\nFavor escolher um numero de 1 a 29. \n\n");
goto REFAZ;}
if(((bissexto==0)&&(m==2))&&((d<1)||(d>28))){
printf("\nFavor escolher um numero de 1 a 28. \n\n");
goto REFAZ;}

printf("\nA data é: %d/%d/%d\n", d, m, a);
if (bissexto == 0) printf("\nO ano nao e bissexto!\n\n");
else printf("\nO ano e bissexto!\n\n");

switch (m) {
case 1:
ndia=d;
break;
case 2:
ndia=31+d;
break;
case 3:
if(bissexto==1){
ndia=31+29+d;
} else {
ndia=31+28+d;
}
break;
case 4:
if(bissexto==1){
ndia=31+29+31+d;
} else {
ndia=31+28+31+d;
}
break;
case 5:
if(bissexto==1){
ndia=31+29+31+30+d;
} else {
ndia=31+28+31+30+d;
}
break;
case 6:
if(bissexto==1){
ndia=31+29+31+30+31+d;
} else {
ndia=31+28+31+30+31+d;
}
break;
case 7:
if(bissexto==1){
ndia=31+29+31+30+31+30+d;
} else {
ndia=31+28+31+30+31+30+d;
}

break;
case 8:
if(bissexto==1){
ndia=31+29+31+30+31+30+31+d;
} else {
ndia=31+28+31+30+31+30+31+d;
}
break;
case 9:
if(bissexto==1){
ndia=31+29+31+30+31+30+31+31+d;
} else {
ndia=31+28+31+30+31+30+31+31+d;
}
break;
case 10:
if(bissexto==1){
ndia=31+29+31+30+31+30+31+31+30+d;
} else {
ndia=31+28+31+30+31+30+31+31+30+d;
}
break;
case 11:
if(bissexto==1){
ndia=31+29+31+30+31+30+31+31+30+31+d;
} else {
ndia=31+28+31+30+31+30+31+31+30+31+d;
}
break;
case 12:
if(bissexto==1){
ndia=31+29+31+30+31+30+31+31+30+31+30+d;
} else {
ndia=31+28+31+30+31+30+31+31+30+31+30+d;
}
break;
}
printf("\nO dia do ano e: %d\n\n", ndia);
system("PAUSE");
return(0);
}

tai o código completo, mas to achando que ficou muito grande... tem como fazer mais simples?

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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...