1 | |||||||||||
Определить длину массива06.03.2012, 16:55. Показов 63277. Ответов 19
Метки нет Все метки)
(
Собственно терроризировал вчера весь гугль, ничего кроме такого метода нахождения длины не нашел
кто знаком с паскалем, там есть функция узнать длину массива обычных стандартных типов это
Как такое чудо можно организовать? Кстати все примеры которые видел, с передачей, там передается не только сам массив, но еще и его размер вторым параметром... Может в этом кроется какой-то своеобразный смысл? Но как по привычке паскалевской, думаю так же узнать размер, нужно для цикла считающего до конца массива...
0
|
|
06.03.2012, 16:55 | |
Ответы с готовыми решениями:
19
Определить среднюю длину непрерывных участков отрицательных значений элементов массива Определить длину и позицию слова, которое имеет наименьшую длину в строке
|
45 / 10 / 3
Регистрация: 03.03.2009
Сообщений: 254
|
||||||
06.03.2012, 17:00 | 2 | |||||
1
|
06.03.2012, 17:06 [ТС] | 3 |
ммм, я имел ввиду про стандартные методы, даже не стандартные, а простые, просто не от меня зависит то, что и как я бы это использовал, имеются ограничения при решении задач
![]() Но все равно спасибо ![]()
0
|
4 / 4 / 0
Регистрация: 11.08.2011
Сообщений: 62
|
|
06.03.2012, 17:18 | 5 |
что значит "длину массива"?
длинна массива по количеству элементов определяется при объявлении. Вектора, как в примере выше, если ты не знаешь сколько у тебя будет элементов, тогда через вектор. А если тебе надо узнать, сколько байт занимает массив, то sizeof(<тип элементов массива>) * <количество элементов>
0
|
06.03.2012, 17:30 [ТС] | 7 |
а если это динамический массив?, извините если я говорю сленгом паскаля, может тут не так оно называется...
нужно только обратная операция... найти кол-во элементов
0
|
06.03.2012, 17:49 [ТС] | 9 |
а если я например хочу скажем функцией сосчитать сумму элементов, и отвязать функцию от конкретных размерностей, что массив будет равен 2 элементам, или будет равен 1 000 000 элементам - функция должна будет мне сосчитать... вот и нужно мне же будет в функции моей досчитать до скольки-то, и перебор сложить меж собой. А массив который я передам он будет иметь конкретный размер уже
0
|
06.03.2012, 17:54 [ТС] | 12 | ||||||||||
вот пример паскалевкого универсального кода...
сама функция подсчета суммы массива любой длины целых чисел может так будет быстрее понять мою мысль
0
|
![]() 3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|||||||||||
06.03.2012, 18:05 | 14 | ||||||||||
Вот пример С++
Добавлено через 2 минуты Arcor, а вообще для подсчета суммы есть std::accumulate
1
|
06.03.2012, 18:09 [ТС] | 15 |
такое чувство, выше писаный текст никто не читал ...
![]() ладно, раз нету таких примудростей, будем передавать вторым параметром размер... Все же получается привязка, и размер везде, не одном месте придется задавать ручками не удобно зная один язык, писать в другом ![]() если у кого-то еще есть идеи, которых нету сверху - просьба выложить заранее спасибо, и спасибо всем, пытавшимся мне помочь Добавлено через 45 секунд да подсчет суммы был просто пример
0
|
Заблокирован
![]() |
||||||
06.03.2012, 18:13 | 16 | |||||
Arcor, при желании можно 0 элементом массива передавать его размер, а все его данные будут начинаться с индекса 1.
- такая конструкция работает только для статических массивов!Т.е. здесь - размер массива можно было бы получить посредством
Добавлено через 2 минуты Arcor, для нечаровских динамических массивов отловить маркер его конца можно наверно только с try{}catch(...){} блоком, т.е. ловить первый выход за пределы отведенной памяти
0
|
![]() 3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||||||
06.03.2012, 19:43 | 18 | |||||
Arcor, в Ваших постах есть ответы, на Ваши же вопросы. Ничего нового сказать я не могу.
По поводу передачи массива в функцию. Как отметил fasked, Вы передаете не массив, а указатель на его первый элемент. И в самой функции Вы определить размер выделенной памяти, наверное, уже не сможете. Поэтому всегда передается и размер массива, как параметр(или итератор на начало и конец, как во всех функция STL). Но! Можно всегда выкрутиться.
![]()
0
|
06.03.2012, 19:47 [ТС] | 19 |
Спроси лучше у моего профессора, если получишь внятное объяснение, расскажешь мне
![]() Как по мне я бы вообще ему сдавал бы программы хоть на дельфи написанные, программа все равно выполняет требуемые действия в конечном итоге...
0
|
![]() 3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||||||
06.03.2012, 20:24 | 20 | |||||
В данном случае передается копия массива. И в Паскале Вам бы пришлось указать размер этого массива самостоятельно
![]() Добавлено через 35 секунд Тогда только так. Добавлено через 36 минут Arcor, единственное, что приходит на ум, так для того чтобы не передавать вторым параметром размер массива в функцию при использовании Си-массивов, так это использовать вместо них, связный список, например. Еще один способ менее универсальный, так это использовать какой-нибудь признак конца массива(значение, которое никогда не встретится в вашем массиве). Т.е., например, значение INT_MIN
Но все же лучше этого варианта ![]()
0
|
06.03.2012, 20:24 | |
Помогаю со студенческими работами здесь
20
Определить минимальную длину последовательности ненулевых элементов массива Как определить длину отдельного элемента двумерного массива
invalid qualifier при попытке определить длину массива внутри функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |