подозреваю что вопрос простой, но не пойму как вопрос сформулировать и не могу решение найти. Перешел от массива массивов к структуре для удобочитаемости кода, но не пойму теперь как вывести данные циклом, когда был массив массивов
и еще одна задача есть, если это не решается одним методом. необходимо передать в функцию несколько переменных из структуры(там одиночные переменные не массивы), как это делать правильно, сейчас прописываю
При добавлении датчика приходится все копировать и внимательно менять ссылку на другую структуру, если код меняю, соответственно по всем этим “блокам кода” надо пройти. както получается деревянно. Опять таки при массиве можно создатьмассив датчиков и подмассивы параметров этих датчиков и в функцию передавать только номер массива, а в самой функции брать параметр из подмассива
А то, что это и компилироваться не будет - нормально?
Он спросил “как выводить” - я показал. Уж разберется чай…
А так да, зачем-то десятку влепил - сам не знаю )))
как то так и я делаю, думал есть более простое решение. когда структура имеет 10 переменных,а ты решил добавить еще одну, приходиться по всему коду ходить и исправлять на этапах сбораи вывода как минимум
есть ли способ собрать имя переменной из string значений? т.е. берем название структуры и название переменной и соединяем, получаем переменную string, а как из нее “имя переменной” сделать? есть ли способ?
Это классика…
Запишите число переменных в константу или макрос и используйте этот макрос во всех циклах. Если захотите добавить еще переменную, будет достаточно исправить только в одном месте, а не по всей программе.
А еще число переменных можно хранить в самой структуре, например в виде статического члена.
Мне непонятны цели Ваших телодвижений, а потому я не знаю, что Вам предложить.
Элементы массивов не имеют собственных имён и все имеют один и тот же тип и потому массив легко обрабатывается циклом.
Вы решили от массива перейти к структуре, чтобы каждый элемент имел своё имя и имел право иметь любой тип. Но при этом хотите продолжать обработку при помощи цикла (где одинаковый тип - жёсткое требование, а имена не нужны). Зачем? Если Вы не собираетесь иметь данные разных типов и для обработки Вам не нужны имена, зачем Вы от удобного массива перешли к неудобной для циклов структуре? Пока я не пойму зачем Вам это, мне трудно Вам что-то предлагать, т.к. я не понимаю выгод за которые Вы боролись пре переходе к структуре.
Т.е. поля структуры у Вас отвечают за разные датчики. Тогда я совсем не понимаю, для чего Вы ушли от массива - массив датчиков - это так естественно?
Если сильно надо, то поля структуры можно перебирать по индексу (типа там kaka[i]), в принципе я могу показать как это делается. Но при этом требования, чтобы эти перебираемые поля имели один и тот же тип никто не отменял и делается это, мягко говоря “через Альпы”, а с массивом - просто и естественно.
Потому, попробуйте подумать и сформулировать для себя - а для чего Вы ушли от массива и сделали структуру. Как ответите себе, озвучьте и для меня, мож чего и придумаем.
Шёл , шёл…
Вы бы написали полный пример такой одной функции , который можно запустить, и посмотреть, а то опять обрывки.
Или весь код целиком выкладывайте.
есть тепловой процесс, на разных его этапах датчиками измеряю температуру, на этих этапах помимо датчиков есть другие переменные НО они в разных точках разные (к примеру в одной точке поток перенаправляется в разные контуры и необходимо фиксировать какой контур работает). Некоторые структуры 2-4 переменные, некоторые >10. Конечно они имеют разный тип. Обьединил я их в структуры по признаку в какой точке процесса они находятся, мне так было удобнее.
Но если простого решения текущей конструкции нет, проще сделать массив для датчиков индекс будет соответствовать индексу аналогового входа, просто надо будет помнить какая точка процессса к какой ножке подключена
Обычно из первой части этого утверждения и следует вторая.
Скажите, Вам данный механизм (перебор членов структуры как элементов массива) нужен только для вывода структуры в сериал? Потому что дальше у вас разные функции для разных полей (что, в общем-то, логично). Если да, то лучше унаследовать вашу структуру от Printable (кажется так называется), или хотя бы просто добавить в нее метод void print() и вызывать его вместо вашего цикла.
Наверное, правильно передать в функцию ссылку на всю структуру. А уже в самой функции использовать те поля, которые ей нужны.