Поиск ближайшего значения в массиве

288
21 января 2017, 11:38

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

Как это сделать? Хотелось бы увидеть пример кода на чем-нибудь C-подобном.

Answer 1

Ну что-то на голом C:

char * schedule[] =
{
    "8:25",
    "10:15",
    "14:20",
    "18:20",
    "19:40"
};
char * current_time[] =
{
    "05:15",
    "08:25",
    "17:40",
    "20:15"
};

int main(int argc, const char * argv[])
{
    for(int i = 0; i < sizeof(current_time)/sizeof(current_time[0]); ++i)
    {
        int h,m;
        int found = 0;
        sscanf(current_time[i],"%d:%d",&h,&m);
        int ct = h*60+m;
        for(int j = 0; j < sizeof(schedule)/sizeof(schedule[0]); ++j)
        {
            sscanf(schedule[j],"%d:%d",&h,&m);
            int st = h*60+m;
            if (ct <= st)
            {
                printf("Current time: %s, nearest bus at %s\n",
                       current_time[i],schedule[j]);
                found = 1;
                break;
            }
        }
        if (!found)
        {
            printf("Current time: %s, nearest bus at %s tomorrow\n",
                   current_time[i],schedule[0]);
        }
    }
}

Как я понимаю, интересует ближайший в будущем, а не тот, который минуту назад ушел? :)

READ ALSO
Что такое индекс mysql и как их использовать

Что такое индекс mysql и как их использовать

Можете привести понятный пример индекса в таблицах? В документациях столько всего написано, это вводит в заблуждениеИндекс - это и есть первичный...

279
Как добавить(прибавить) значение в поле MySQL?

Как добавить(прибавить) значение в поле MySQL?

Как добавить в поле БД значение, не перезаписывая его ? Например, добавить в поле words БД users значения (сначала одно, потом второе и пр), НО только...

326
Espresso тест на ожидание

Espresso тест на ожидание

Есть следующий тест, который при переходе в форму логина, вводит некорректные данные, в ответ на которые ему выводится дилоговое окно с текстом...

391