найти ближайшую дату

 

Доброе утро всем,

У меня есть 10 datetime, и я хочу узнать, какой из них является ближайшим к текущему времени, какую формулу я могу использовать?

Спасибо за поддержку.

 
dr.house7:

Доброе утро всем,

У меня есть 10 datetime, и я хочу узнать, какой из них является ближайшим к текущему времени, какую формулу я могу использовать?

Спасибо за поддержку.

Здравствуйте, dr.house7,

можете ли вы показать нам попытку?

Пробовали ли вы что-нибудь сделать до сих пор? Есть ли у вас какой-нибудь кусок кода, чтобы показать нам?

Если вам нечего показать, то лучше поискать в Code Base или разместить работу в разделе Вакансии.

 
Malacarne:

Здравствуйте, доктор Хаус7,

Вы можете показать нам хоть одну попытку?

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

Если вам нечего показать, то лучше поискать в Code Base или разместить работу в разделе Вакансии.

смешно
 
dr.house7:
смешно

Привет, Мистер Хаус, почему смешно? Вы хотите код бесплатно

Я думаю, что прямой формулы нет. Ваши 10 дат находятся в массиве? Создайте цикл для сравнения каждого времени с текущим временем и сохраните то время, которое ближе к текущему времени.

Если вы опубликуете свой код, вы получите помощь, конечно.

 
angevoyageur:

Привет, Мистер Хаус, почему смешно? Вы хотите код бесплатно

Я думаю, что прямой формулы нет. Ваши 10 дат находятся в массиве? Создайте цикл для сравнения каждого времени с текущим временем и сохраните то время, которое ближе к текущему времени.

Если вы опубликуете свой код, вам обязательно помогут.

Это именно тот ответ, который я искал, спасибо Ange!

p.s.

Я всегда кодировал бесплатно, на форуме tsd.

 

хорошо, вот код:

int touchedline[10];
int temp = 0;

touchedline[0]=doc1Time;
touchedline[1]=doc2Time;
touchedline[2]=doc3Time;
touchedline[3]=doc4Time;
touchedline[4]=doc5Time;
touchedline[5]=doc6Time;
touchedline[6]=doc7Time;
touchedline[7]=doc8Time;
touchedline[8]=doc9Time;
touchedline[9]=doc10Time;


    for(int i=0;i<10;i++)
    {
        if(touchedline[i]>temp)
        temp=touchedline[i]; 
    }
 

doc1Time, doc2Time, doc3Time, ...и т.д. являются datetime

С помощью этой формулы я получил время последнего касания, но не номер использованного массива объектов... как я могу узнать точное значение последнего использованногоtouchline[x]?

Мне нужно знать, какой объект имеет наибольшее значение,touchedline[0] илиtouchedline[1] илиtouchedline[3] и т.д.

Спасибо за поддержку

doc

 
dr.house7:

Это именно тот ответ, который я искала, спасибо Анже!

p.s.

Я всегда кодировал бесплатно, на форуме tsd.

Каждый может кодировать бесплатно.

Но на форумах mql4.com и mql5.com принято помогать людям, которые делятся своим кодом и показывают свои попытки.

   ...
   int highest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         highest=i;
         temp=touchedline[i];
        }
     }

Это даст вам индекс наибольшего значения и "ближайшее к текущему времени" при условии, что все значения date touchedline[] уступают текущему времени.

Вы также можете использовать ArrayMaximum().

 
angevoyageur:

Каждый волен кодить бесплатно

Но на форуме mql4.com и mql5.com принято помогать людям, которые делятся своим кодом и показывают свои попытки.

Это даст вам индекс наибольшего значения, и "ближайшего к текущему времени" при условии, что все значения date touchedline[] уступают текущему времени.

Вы также можете использовать ArrayMaximum().

:D

Спасибо большое... Я использовал"int highest=0;" в моей предыдущей попытке, в этом и была моя проблема.

Хороших выходных!

doc

 
angevoyageur:

Каждый волен кодировать бесплатно

Но на форуме mql4.com и mql5.com принято помогать людям, которые делятся своим кодом и показывают свои попытки.

Это даст вам индекс наибольшего значения, и "ближайшего к текущему времени" при условии, что все значения date touchedline[] уступают текущему времени.

Вы также можете использовать ArrayMaximum().

Доброе утро и приятного воскресенья!

Надеюсь, вы снова направите меня на правильный путь... Мне нужно получить предыдущее"наибольшее" значение, а не только текущее, как мне поступить?

Спасибо за любую помощь

doc

 
dr.house7:

Доброе утро и хорошего воскресенья!

Я надеюсь, что вы можете направить меня на правильный путь снова ... Мне нужно получить предыдущий"самый высокий" не только текущий, как я могу действовать?

Спасибо за любую помощь

doc

Что-то вроде этого?

   ...
   int highest=-1,previousHighest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         previousHighest=highest;
         highest=i;
         temp=touchedline[i];
        }
     }
Только решение среди других.
 
angevoyageur:

Что-то вроде этого?

Только решение среди других.

спасибо большое, это работает как шарм!

но это немного странно для понимания :)

Причина обращения: