Не получается точный вывод для программы в c для печати самой последней возможной действительной даты в 2018 году - PullRequest
0 голосов
/ 21 апреля 2020

Постановка проблемы: Арун и его сестра Уша бросают вызов друг другу с помощью математических головоломок. Уша, умнее, пришла в голову идея дать Аруну 12 цифр в диапазоне от 0 до 9 и назначить ему самое позднее время в 2018 с ними. Арун немного нервничает и просит вас помочь ему с компьютерной программой.

Уша даст Аруну 12 цифр. Ему нужно создать дату-время в формате ММ / ДД (должны присутствовать все четыре цифры), а время в формате ЧЧ: ММ ((должны присутствовать все четыре цифры). Дата может быть от 01 // 01 до 12/31 и время может быть с 00:00 до 23:59 (в 24-часовом формате). Указанные цифры могут использоваться только один раз в ответе, который дает Арун. Если возможно более одной комбинации даты и времени, Арун нуждается в дать самую последнюю возможную дату-время в 2018 году.

Ввод

Строка, состоящая из 12 (не обязательно различающихся) отдельных цифр (0-9), разделенных пробелами. Последовательность будет быть неубывающим.

Вывод

Вывести самую последнюю возможную дату-время в 2018. Вывод должен быть в формате ММ / ДД ЧЧ: ММ. Мой код:

#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;
}

Ввод

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

Ожидаемый вывод

12/30 22:59

Я не получаю ожидаемого вывода.

Мой текущий выходной сигнал

12/3-1 22:59

Может кто-нибудь сказать мне, что не так с моим кодом или какие изменения мне нужно сделать, чтобы я получить требуемый вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...