DEFICIENCIAS :

  La expresión de la línea 35 :   if(dia==29)
  debería decir :                 if(dia<=29)

  La expresión de la línea 37 :   else if(dia==28)
  debería decir :                 else if(dia<=28)

  Por esto tu programa no responde con fechas como : 12/2/2000