Для решения задачи удобнее перевести время в минуты. Считываем параметры будильника, в случае ежедневного будильника рассмотрим два случая: если время на нем больше чем текущее, то номер дня недели для будильника равен текущему дню, в противном случае на один больше. Если текущее время больше чем время будильника, увеличиваем его на неделю. Находим разницу с текущим временем и запоминаем наименьшую. Полученный минимальный промежуток прибавляем к текущему времени и переводим полученный результат в дни (целая часть от деления на 24*60), часы (оставшиеся от дней минуты делим на 60 нацело) и минуты (остаток от деления на 60 оставшихся от дней минут. Если число полученных дней больше чем дней недели, находим остаток от деления на 7, в случае получения нулевого остатка заменяем его на 7.