When to take medicine whats wrong with my solution . Output is right

#include <stdio.h>

int main(void) {
long long int t;
char d1,d2;
int g[]= {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
scanf("%lld",&t);
while(t–)
{
int yyyy,mm=0,dd=0,c=0;
scanf("%d:%d:%d",&yyyy,&mm,&dd);

      if((yyyy%4==0 && yyyy%100!=0) || (yyyy%100==0 && yyyy%400==0))
        {
          g[2]= 29;
        }
        else
        {
          g[2]= 28;
        }
    

  
  
      switch (g[mm]) 
      {
          case 31:
              c=((31-dd)/2)+1;
              break;
          case 30:
              if((30-dd)%2==0)
              {
                  c=((30-dd)/2)+16;
              }
              else
              {
                  c=((30-dd)/2)+17;
              }      break;
          case 29:
              c=((29-dd)/2)+1;
              break;
          case 28:
              if((28-dd)%2==0)
              {
                  c=((28-dd)/2)+16;
              }
              else
              {
                  c=((28-dd)/2)+17;
              }      break;
          default:
              break;
      }
      printf("%d",c);
      
  }

return 0;

}

Your Logic is absolutely fine…
Just replace printf("%d",c) to printf("%d\n",c) And it will work correctly…
(Your code output got appended and thats why it is giving wrong answer)

1 Like