Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Ответить

Какой функцией можно посчитать количество членов массива?

Пт окт 24, 2008 12:40:11

Нужно чтобы программа считала количество членов числового массива. какой функцией Си для этого можно воспользоваться?

Пт окт 24, 2008 15:32:49

Вообще то, количество членов статического массива ты задаешь в описании массива!
Можно поюзать sizeof() она вернёт размер массива в байтах.
Если ты сам создашь динамический массив вызвав new[] или alloc() то никак, ты сам должен следить за размером массива!

Пт окт 24, 2008 19:59:56

Массивы динамические.... Сам почесал репу и создал функцию, подсчитывающую количество членов такого массива! 8) Работает четко. 8) Пришлось, раз уж нет готовой!

Пт окт 24, 2008 20:05:09

megasvintus писал(а):Массивы динамические.... Сам почесал репу и создал функцию, подсчитывающую количество членов такого массива! 8) Работает четко. 8) Пришлось, раз уж нет готовой!

и ГДЕ ЖЕ ОНА ????

Пт окт 24, 2008 20:30:28

Щас вылизываю окончательно. А что, это настолько интересно?

Пт окт 24, 2008 20:40:31

Коненчо интересно.

Пт окт 24, 2008 20:45:10

Седня тогда выложу, как приведу в божеский вид листинг, и исправлю мелкий глюк.

Пт окт 24, 2008 20:53:17

Начал за здравие:
megasvintus писал(а): Работает четко.


А закончил ...
megasvintus писал(а): исправлю мелкий глюк.


:lol: :lol: :lol:

Пт окт 24, 2008 20:56:50

Дык он не принципиален, работает все четко, но мне ХОЧЕТСЯ сделать немного красивее

Пт окт 24, 2008 21:01:34

непонятен сам смысл такой функции... как может получиться так, что в массиве окажется неизвестное число элементов?! кто их туда засунет, если не программа? а когда программа туда их писать будет - значит, она будет знать, сколько их там...

Пт окт 24, 2008 21:08:28

Пишет их внешний модуль, эти массивы-результат оцифровки разных картинок. Там бывают сотни значений. Я сделал так, что в зависимости от ситуации, основная программа берет нужный массив, вычисляет число его членов для того чтобы знать, когда остановить загрузку данных в жк.

Я не претендую на то, что это шедевр.

Пт окт 24, 2008 21:14:55

внешний модуль - это что, не часть программы? что-то похоже все как-то шиворот-навыворот делается... и потом, нормальные программы пишут разноразмерные данные в структуры:
Код:
struct{
   int cnt;
   char *data[];
} my_array_ptr;


поле cnt содержит записанное вашим "внешним" моделуем количество элементов в массиве data :) и вашей программе достаточно лишь обратиться к этому полю...

я, конечно, не настаиваю... хотя, имхо, ваш способ - это похоже на удаление геморроя через ухо...

Пт окт 24, 2008 21:27:23

А массивы int не будут жрать уж очень много ОЗУ?

Пт окт 24, 2008 21:29:21

массивы вы делайте какие угодно. почему сразу int?

Пт окт 24, 2008 21:29:23

Исправлено.

Тогда придется реализовывать параллельное считывание данных из массива с размерами... Не знаю что проще получается. Сама функция подсчета членов массива занимает 250 кодовых слов.

ARV, вы как всегда, оказались правы... Снимаю шляпу. Проще в софтину внести изменения, чтобы первые 2-3 байта суммировались, таким образом, вычислялось значение размера массива. Тем паче что макс. размер предусматривается в 512 членов.

Пт окт 24, 2008 21:38:07

если я не ошибаюсь, ваш "сторонний модуль" - это вами же написанная программа? если так, то что вам стоит модифицировать ее так, чтобы сначала она выводила количество данных, а потом сами данные? и тогда вы прекрасно сможете использовать структуру типа той, что я привел в примере выше... чем не нравится?

Пт окт 24, 2008 21:41:30

Ну просто я как всегда, пошел в программировании по более сложному пути. И заодно лишний раз поупражнялся.! :)))

Пт окт 24, 2008 21:43:31

megasvintus писал(а):Ну просто я как всегда, пошел в программировании по более сложному пути. И заодно лишний раз поупражнялся.! :)))
тогда рекомендую сделать так: пусть ваша программа генерирует выходные данные в кодировке UTF8 в виде троичных чисел, а для МК вы напишите функцию, которая будет делать обратную перекодировку...

и сложно, и бессмысленно - вот и поупрожняетесь вволю :)))

Пт окт 24, 2008 21:50:31

Не надо издеваться над ламером! Я и так знаю что слишком мало знаю (сорри за тавтологию)! :)))

Пт окт 24, 2008 22:03:28

прошу прощения - я не издевался, а шутил.
не знать - не стыдно. стыдно не узнавать.
Ответить