lundi 20 avril 2020

Not getting exact output for program in c to print the latest possible valid date time in the 2018

Problem statement: Arun and his sister Usha are challenging each other with mathematical puzzles .Usha,the cleverer one ,has come up with the idea of giving Arun 12 digits ranging from 0 to 9, and have him the latest date time in 2018 with them.Arun is a little nervous and asks you to help him with a computer program.

Usha will give Arun 12 digits . He needs to create date-time in the MM/DD format (all four digits must be present), and the time in format HH:MM ((all four digits must be present).The date may be from 01//01 to 12/31 and time maybe from 00:00 to 23:59 (in the 24 hour format).The digits provided may be used only once in the answer that Arun gives. If more than one date-time combinations are possible , Arun needs to give the latest date-time possible in the year 2018.

Input

A line consisting of 12 (not necessarily distinct) single digits(0-9) separated by spaces.The sequence will be non-decreasing.

Output

Print the latest possible date-time in the year 2018.The output must be in the format MM/DD HH:MM. My code is :

#include<stdio.h>
int max(int n1,int n2)
{    if (n1>=n2)
      return n1;
      else 
      return n2;

}
int main()
{ int numbers[12];
for (int i=0 ; i<12 ; ++i)
{scanf("%d ",&numbers[i]);}
int month_1=-1,month_2=-1,day_1=-1,hour_1=-1,hour_2=-1,min_1=-1,min_2=-1;
int day_2=-1;
for (int i=0 ; i<12 ; ++i)
{
    if(numbers[i]==1)
    {
        month_1=1;
        numbers[i] =20;
    }
    else if(numbers[i]==0){
        month_1=0;
          numbers[i] =20;
    }

}

    if (month_1==0)
    {       for (int i=0 ; i<12 ; ++i)

      {  if (numbers[i]>0 && numbers[i]<10)
        {
            month_2 = max(month_2,numbers[i]);
        }

      }

    }
     for (int i=0 ; i<12 ; ++i)
     {
         if (month_2==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }
   if (month_1 == 1)
    {
         for (int i=0 ; i<12 ; ++i)
       {       if (numbers[i]>=0 && numbers[i]<3)
       {
           month_2 = max(month_2,numbers[i]);
       }

       }

    }




             for (int i=0 ; i<12 ; ++i)
     {
         if (month_2==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }

    for (int i=0 ; i<12 ; ++i)
    {
        if (numbers[i]>=0 && numbers[i]<4)
        {
            day_1 =max(day_1,numbers[i]);
        }
    }

             for (int i=0 ; i<12 ; ++i)
     {
         if (day_1==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }
    if (day_1==0)
  {   for (int i=0 ; i<12 ; ++i)
    {
         if (numbers[i]>0 && numbers[i]<10)
         {
             day_2 = max(day_2,numbers[i]);
         }
    }

  }
else if (day_1>0 && day_1 <=2)
  {   for (int i=0 ; i<12 ; ++i)
    {
         if (numbers[i]>=0 && numbers[i]<10)
         {
             day_2 = max(day_2,numbers[i]);
         }
    }

  }
  else if (day_1==3)
  {   for (int i=0 ; i<12 ; ++i)
    {     if (numbers[i]==0 || numbers[i]==1)
          {
              day_2 = max(day_2,numbers[i]);
          }

    }

  }

             for (int i=0 ; i<12 ; ++i)
     {
         if (day_2==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }


    for (int i=0 ; i<12 ; ++i)
    { if (numbers[i]>=0 && numbers[i]<3)
        {
            hour_1 = max(hour_1,numbers[i]);
        }


    }
     for (int i=0 ; i<12 ; ++i)
     {
         if (hour_1==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }
   for (int i=0 ; i<12 ; ++i)
    { if (numbers[i]>=0 && numbers[i]<4)
        {
            hour_2 = max(hour_2,numbers[i]);
        }

    }
     for (int i=0 ; i<12 ; ++i)
     {
         if (hour_2==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }
     for (int i=0 ; i<12 ; ++i)
    { if (numbers[i]>=0 && numbers[i]<6)
        {
            min_1 = max(min_1,numbers[i]);
        }


    }
     for (int i=0 ; i<12 ; ++i)
     {
         if (min_1==numbers[i])
         {
             numbers[i] =20;
             break;
         }

     }
     for (int i=0 ; i<12 ; ++i)
    { if (numbers[i]>=0 && numbers[i]<10)
        {
            min_2 = max(min_2,numbers[i]);
        }



    }

    printf("%d%d/%d%d %d%d:%d%d",month_1,month_2,day_1,day_2,hour_1,hour_2,min_1,min_2);

    return 0;
}

Input

0 0 1 2 2 2 3 5 9 9 9 9

Expected Output

12/30 22:59

I am not getting expected output.

My current output is

12/3-1 22:59

Can anyone please tell me what's wrong with my code or what changes do I need to make so that I get the required output.

Aucun commentaire:

Enregistrer un commentaire