Ir para conteúdo

POWERED BY:

Arquivado

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

Lovelace King

[Resolvido]  em C

Recommended Posts

Estou tentando fazer um programa que leia um ano digitado pelo usuario e, em seguida o programa tem que ler um mes digitado pelo usuario . No fim do algoritmo o programa deve informar : se o ano é bissexto e dpois , o nome do mes e a quantidade de dias no mes escolhido. Lembrando que em ano bissexto o mes de fevereiro tem 29 dias.

 

Ja tentei de varias maneiras e o maximo q consegui fazer foi isso aki :

 

 

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

int main ()
{
	int ano,mes,dia,qtd_dias,tp_ano; /*ano,mes,quantidade de dias no mes escolhido , tipo do ano(comum ou bissexto)*/
	printf ("\n Ano :\n");
	scanf ("%d",&ano);
	if ((ano%400==0) || ((ano%4==0)&&(ano%100!=0)))/*condiçao para ano bissexto que sera armazenado como 2*/
		  {
		   tp_ano = 2;
		  
		   }
		   else /*senao ano comum , armazenado por 1*/
		   tp_ano = 1;
		   if (tp_ano == 1) /*se ano for comum analisaremos os meses dele...*/
		   {
		  do/*com esse do-while eu obrigo o usuario a digitar um mes valido*/
		   {
		   printf ("\nMes:\n");
 scanf ("%d",&mes); 
} while ((mes<1)||(mes>12)); 
	   if (mes == 1||3||5||7||8||10||12)/*aqui começa a sequencia de comandos p/ definir a qtd de dias em cada mes*/
	   {
			   qtd_dias = 31;
			   }
			   if (mes == 4||6||9||11)
			   {
			   qtd_dias = 30;
			   }
			   if (mes==2)
			   {
						  qtd_dias=28;
						  }
						  }
						  if (tp_ano == 2)/*se ano for bissexto analisaremos os meses dele...*/
		   {
		   do/*com esse do-while eu obrigo o usuario a digitar um mes valido*/
		  {
   printf ("\nMes:\n");
 scanf ("%d",&mes); 
} while ((mes<1)||(mes>12));
	   if (mes == 1||3||5||7||8||10||12)/*aqui começa a sequencia de comandos p/ definir a qtd de dias em cada mes*/
	   {
			   qtd_dias = 31;
			   }
			   if (mes == 4||6||9||11)
			   {
			   qtd_dias = 30;
			   }
			   if (mes==2)
			   {
						  qtd_dias=29;
						  }
						  }
						  switch (tp_ano)
						  {
								 case 1:
						 printf ("\nO ano %d eh comum e o mes escolhido tem %d dias ",ano,qtd_dias);
						 break;
						  case 2:
						 printf ("\nO ano %d eh bissexto e o mes escolhido tem %d dias ",ano,qtd_dias);
						 break;
						 }
 system ("pause");
 return 0;					   
}

 

 

Esse algoritmo retorna de boa o tipo do ano , porem eu nao consegui axar nenhum comando para faze-lo mostrar o nome do mes (tentei usar string, mas sempre dava erro) e tmbm, quando o mes tem 31 dias , ele permanece mostrando como se tivesse 30.(obs: o mes de fevereiro ele mostra normal a quantidade de dias 28 ou 29).

 

Alguem ai pode me ajudar ?

Agradeço desde já !!

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao que sei o erro está em:

 

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

 

//[...]

 

if (mes == 4||6||9||11)

O código só está conseguindo executar a validação em destaque. O mais correto seria substituir por:

 

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

 

e

 

if ( (mes == 4) || (mes == 6) || (mes == 9) || (mes == 11))

 

ou usar um switch-case

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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