Приветствую! Мужики, ну голова ... вскипает. Как реализовать образно говоря матрицу времени, в которой в разное время у переменной Х разное значение, согласно таблице? Например в 01:00 х=23 в 01:30 х=23,5 в 05:00 х=20 и так на протяжении суток ... с шагом в пол часа ... подкиньте идею как это грамотно реализовать? хотя бы костяк идеи ...
шаг счисления времени - полчаса? Создаешь одномерную матрицу размерностью float, где 1-й элемент m[0]=t0 (значение температуры для 00:00), m10]=t1 (значение температуры для 00:30) и т.д. Тогда получаем автоматом: для времени 01:00 - это m[2]=23, для времени 01:30 - это m[3]=23.5, для времени 05:00 - это m[10]=20.
Одну общую переменную Х, куда каждые полчаса записывать значение из соответствующего элемента массива.
Сижу думаю как грамотно преобразовать время в номер ячейки в массиве? например 01:12 мне должно выдать 3 номер йчейки 02:22 5 ячейку ... сижу думаю ... если кто то быстрее додумается, буду рад помощи спасибо за советы выше. p.s. hh & mm это две переменные int
Как то не красиво Предлагается так hh*60+mm и потом делим 30 получаем число, которое округлив в большую сторону = номер ячейки. как такой вариант?
округлять как раз не надо, по умолчанию дробная часть отбрасывается и получается именно то что надо: Код (C++): #define PERIOD 30 #define ITEMS 48 float m[ITEMS] = {23.0, 23.2, ...} setup{} loop { byte tt = (byte)(((hh * 60 + mm) / PERIOD); float x = m[tt]; } int это много, достаточно byte, ведь каждая из них не превышает 255.
Например 1*60=60, 60+12=72 72\30=2.4 ... 1 час 12 минут это 3я ячейка а что получится без округления?2 или 3? или тут фокус что массив начинается с 0?
Зачем массив? Нужный результат получаем по формуле: int hh,mm,k float x ........... k=mm/30 x=24-hh + k*0.5
Массив для того, чтобы переменная Х имела в сутках 48 произвольных float значений. Всем огромное спасибо за помощь.
Вот именно это предложенная формула и обеспечивает. целочисленное деление минут на тридцать дает всегда либо 0, либо 1. Умножаем результат на 0,5 и прибавляем инвертированное количество часов.
Извините, но я не понял Вашего предложения. Если можно напишите более развернуто ... Или с примером. Задача как я говорил выше задавать контроллеру 48 разных значений температуры в сутки, и далее управлять нагревателем.
Ага. Это я не понял сути задачи. По первому сообщению получалось что нужно находить х как функцию от времени.