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

 
 
> Массивы, Поиск нужного массива
*SERG
сообщение Dec 1 2005, 08:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Есть 200 массивов (может больше) с разными именами.
Есть переменные вне массивов...
Как в зависимости от значения переменной переходить к считыванию соответствующего массива.
Пишу на СИ в CVAVR (недавно разобрался, может что то и не уловил), пользоваться "if.............." нет желания, этож 200 штук smile.gif
Что посоветуйте???Как это зделать???
Чтоб красиво былоsmile.gif
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
IgorKossak
сообщение Dec 1 2005, 08:21
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Создайте во __flash массив адресов массивов (в Вашем случае 400 байт) и индексом этого массива как раз и будет значение переменной.
Go to the top of the page
 
+Quote Post
yung
сообщение Dec 1 2005, 08:21
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Создать 201-й массив с указателями на предыдующие 200.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Dec 1 2005, 08:40
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Ок, но сначало разберусь с указателями и синтаксисом. Скорей всео вопросы появятсяsmile.gif
Может ещё какие идеи будут?
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 1 2005, 08:46
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Может проще создать двухмерный массив и внешнюю переменную присваивать первому индексу массива.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 1 2005, 08:52
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Конструкция двумерного массива 'отожрет' в два раза больше памяти. Лучше уж массив адресных указателей. И попробуйте воспользоваться конструкцией enum. С символическим содержанием работать всегда приятнее... smile.gif


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
*SERG
сообщение Dec 1 2005, 09:03
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Цитата(Георгий @ Dec 1 2005, 11:46) *
Может проще создать двухмерный массив и внешнюю переменную присваивать первому индексу массива.

Что то вообще не понял как это? blink.gif Зачем двухмерный то, переменная ведь одна

Цитата(IgorKossak @ Dec 1 2005, 11:21) *
Создайте во __flash массив адресов массивов (в Вашем случае 400 байт) и индексом этого массива как раз и будет значение переменной.



Цитата(yung @ Dec 1 2005, 11:21) *
Создать 201-й массив с указателями на предыдующие 200.


Понял что написано одно и то ж и массив с указателями вроде разобрался, как зделать.
СПАСИБО!!!
Может ещё какие предложения будут blush.gif
Go to the top of the page
 
+Quote Post
*SERG
сообщение Dec 1 2005, 09:17
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Цитата(BVU @ Dec 1 2005, 11:52) *
Конструкция двумерного массива 'отожрет' в два раза больше памяти. Лучше уж массив адресных указателей. И попробуйте воспользоваться конструкцией enum. С символическим содержанием работать всегда приятнее... smile.gif

глянул в умную книгу...............
Ага, так вроде лучше и проще получается
СПАСИБО!!!
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 1 2005, 09:40
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Цитата
Конструкция двумерного массива 'отожрет' в два раза больше памяти. Лучше уж массив адресных указателей.

Не понял, почему? Чем один массив из 4 элементов отличается от двух массивов по два элемента.(для примера)


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Виктория
сообщение Dec 1 2005, 09:50
Сообщение #10


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Для Serg-а схематично
Код
// 1 вариант - переменная-индекс в массиве указателей p[]
int a1[], a2[], a3[], ......, a200[];
int *p[200]={a1,a2,a3,..., a200};

// 2 вариант - переменная-индекс N в массиве a[]
int a[N][200];


Первый вариант экономнее при выделении памяти (но не факт что Ваш алгоритм требует именно его).
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 1 2005, 10:00
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Георгий @ Dec 1 2005, 12:40) *
Цитата
Конструкция двумерного массива 'отожрет' в два раза больше памяти. Лучше уж массив адресных указателей.

Не понял, почему? Чем один массив из 4 элементов отличается от двух массивов по два элемента.(для примера)

А потому что изначально определя тип массива двумерный будет в сравнении с одномерным в два раза больше. smile.gif


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 1 2005, 10:37
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Так двумерный массив один, а одномерных надо два! Или я что то не догоняю?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 1 2005, 11:16
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(Георгий @ Dec 1 2005, 13:37) *
Так двумерный массив один, а одномерных надо два! Или я что то не догоняю?


---------------------
!0! . . . . . . . !200! - это одномерный масиив Array[200]
---------------------

---------------------
!0! . . . . . . . !200! - а это двумерный массив Array[2][200]
---------------------
!0! . . . . . . . !200!
---------------------
Вот поэтому он в два раза и больше одномерного. Соответственно, трехмерный будет в три раза
больше одномерного. А вот одномерный Array[400] займет столько же, сколько Array[2][200]
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 1 2005, 11:25
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(Георгий @ Dec 1 2005, 13:37) *
Так двумерный массив один, а одномерных надо два! Или я что то не догоняю?

Все правильно, догоняете, это я немножко 'запарил'... (думаешь одно, пишешь - другое) sad.gif . Ну да ладно, проехали.
Все дело в удобстве использования массивов при работе с ними. Если массив двумерных необходима в алгоритме двумерная индексация, а если пользоваться адресными указателями на массив код становиться проще.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Igor26
сообщение Dec 1 2005, 11:45
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(BVU @ Dec 1 2005, 14:25) *
Цитата(Георгий @ Dec 1 2005, 13:37) *

Так двумерный массив один, а одномерных надо два! Или я что то не догоняю?

Все правильно, догоняете, это я немножко 'запарил'... (думаешь одно, пишешь - другое) sad.gif . Ну да ладно, проехали.
Все дело в удобстве использования массивов при работе с ними. Если массив двумерных необходима в алгоритме двумерная индексация, а если пользоваться адресными указателями на массив код становиться проще.

Еще проще представить двумерный массив в виде шахматной доски. Нужная клетка на доске однозначно "адресуется" буквой и цифрой. (пешка с Е2 на Е4 tongue.gif )
Go to the top of the page
 
+Quote Post

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

 


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


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