реклама на сайте
подробности

 
 
> Многомерные массивы в CodeVision
zheka
сообщение Jan 5 2011, 12:23
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Господа!
Работаю с CodeVision 2.0
Мне нужен многомерный массив. Пытаюсь начать с двумерного. Какова его размерность будет в итоге - фиг его знает,пересчитывать элементы каждый раз я конечно могу, но свербит то что в одномерном массиве без указания размерности вот так можно:

Код
unsigned char  UpMenuImages[] = {11,12,19};


А в двумерном нельзя, выдает ошибку Error: "D:\Ýëåêòðîíèêà\CodeVisoin_Projects\TFT\TFT.c(59): an array can't have elements of this type"

Код
unsigned char  multidim_array[][]={{1,2,3},{4,5,6}};


Есть ли возможность не указывать размерность массива или надо смириться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zheka
сообщение Jan 5 2011, 12:55
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Ну хорошо, дпустим у меня массив [x][y][z]. Z у меня будет постоянен, X буду пересчитывать, а вот Y при разных X ,будет разным. Конечно могу нулями заполнить, но...

В общем я обрисую задачу:
Суть такова - человек касается пальцем экрана, получаются координаты X и Y. В идеале хочу получить индивидуальный номер кнопки на которую нажали, плюс информацию о том, что по нажатию этой кнопки делать (типа кода операции). Вся проблема в том, что у меня как бы несколько "рабочих столов" и анализировать коориднаты нажатия нужно в зависимости от номера рабочего стола, а номера у них имеются.

В принципе, как сделать чтобы хотя бы работало, я знаю, но хочется получить удобный для дальнейшего развития программы массив данных, ибо я пока только скелет строю, а потом придет заказчик и будем "мясо" наращивать. КРоме того, я понимаю, что изобретаю велосипед, и наверняка более рациональные чем я сейчас могу придумать, решения существуют.

Пока у меня два варианта - 3-хмерный массив типа

Код
///                                кн№1           кн№2        кн№3        
unsigned char MAP [5][3][4]={ { {0,0,10,10},{0,0,10,10},{0,0,10,10} },   // Рабочий стол №1
                                              { {0,0,10,10},{0,0,10,10},{0,0,10,10} },   // Рабочий стол №2
                                             { {0,0,10,10},{0,0,10,10},{0,0,10,10} },   // Рабочий стол №3
                                             { {0,0,10,10},{0,0,10,10},{0,0,10,10} },   // Рабочий стол №4
                                             { {0,0,10,10},{0,0,10,10},{0,0,10,10} }    // Рабочий стол №5
                                          };



В функции хочу передавать координаты нажатия и номер рабочего стола Dsk, чтобы функция сравнивала не находится ли X,Y в пределах массива координат, записанного в MAP[Dsk][0..n]. А код операции сделаю пятым элементом массива координат кнопки.

Другой вариант - создать тип данных типа Button c полями x,y,x1,y1,opCode, далее массив Desktop состоящий из Button, массив ProgramData состоящий из Desktop.

Как лучше, рациональнее для компилятора (у меня AVR на 16 МГц, а не Core i7), да и памяти оперативной 2кб.

Или есть более рациональный наработанный способ?

Сообщение отредактировал zheka - Jan 5 2011, 12:56
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016