Ayuda con código para calcular los días de un mes

Iniciado por D_F4UL7, 25 Octubre 2016, 10:47 AM

0 Miembros y 1 Visitante están viendo este tema.

D_F4UL7

Hola, como bien dice el título, necesito ayuda con ese programa, es para clase, y nos pide que calculemos los días de un mes teniendo en cuenta que se intercalan 30 y 31 días, además, febrero tiene 28 excepto cuando el año es bisiesto, que tiene 29, y ahí radica mi problema, no se como hacer que el programa muestre que hay 29 días o 28 en base a si el año introducido es bisiesto o no. Os dejo el código como lo tengo ahora por si alguien me puede echar un cable, muchas gracias!

#include <stdio.h>

int main() {

   int mes, any, divisio1, divisio2, divisio3;

   printf("Entra el número de mes:\n");
   scanf("%d", &mes);

   printf("Entra el any:\n");
   scanf("%d", &any);

   divisio1 = any % 100;
   divisio2 = any % 4;
   divisio3 = any % 400;

   do {

      if (divisio3 == 0 && divisio2 == 0) {
         printf("El mes tiene 29 días.\n");
      }else if (!(divisio1 == 0)) {
         printf("El mes tiene 29 idas.\n");
      }
      else {
         printf("El mes tiene 28 días.\n");
      }
      return 0;
   } while (mes == 2);

   if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 && !(mes == 2)){
      printf("El mes tiene 31 dias. \n");
   }else if (mes == 4 || mes == 6 || mes == 9 || mes == 11 && !(mes == 2)){
      printf("El mes tiene 30 días. \n");
   }
   return 0;
}

He probado un montón de posibilidades, y esto es lo último qe he probado, a ver si alguien me echa un cable, gracias de nuevo!!

MAFUS

No uses do while para el cálculo de febrero. Siempre va a entrar allí dentro. Mételo en un if con comparación a 2. Sino nunca pasarás de ahí.