powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив, его размер.
24 сообщений из 24, страница 1 из 1
Динамический массив, его размер.
    #33457971
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет программисты, если нетрудно, помогите!!!
Есть динамический массив, вот:

int *mas = new int[100];

Как теперь определить сколько в нём записей.

Мне надо сделать так:
for(int i=0; i<=[кол. элем. мас.]; i++)
{
секрет
}
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33457991
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция rand спасет отцов русской демократии. :-))))

--
There Ain't No Such Thing As A Free Lunch
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458011
vbnv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) ошибка в условии конца цикла -- если от нуля, то нужен знак "меньше"
for(int i=0; i<[кол. элем. мас.]; i++) {
секрет
}

2) элементов массива в Вашем примере не более 100, кроме этого ничего нельзя сказать. Либо нужно в конце записывать некий "символ конца данных" (как 0 в Сшных строках), либо завести где-то отдельно счетчик записанного.

3) лучше STL, если возможно
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458029
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если 0 - это не запись, то как длину ASCIZ
Код: plaintext
1.
2.
3.
int i=- 1 ;
while(i< 99  && mas[++i]> 0 );
int len=i;
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458038
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше так
Код: plaintext
1.
2.
3.
int i=- 1 ;
while(i< 99  && mas[++i]!= 0 );
int len=i;
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458048
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saintлучше так
Код: plaintext
1.
2.
3.
int i=- 1 ;
while(i< 99  && mas[++i]!= 0 );
int len=i;

А нуль мы что, уже и за число не считаем?
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458060
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин! Четко же обозначено что массив динамический.
И определить в неком другом месте (функции, например) кол-во записей в нем,
не представляется возможным, кроме как передачей в это место размера этого массива.
Все попытки выкрутится с помощью якобы не используемых значений - от лукавого.
vbnv метко заметил насчет STL. есть vektor - и не надо изобретать велосипеды.
--
There Ain't No Such Thing As A Free Lunch
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458075
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господи я и неожидал что здесь столько акул С++ плавает.
Я ошибся в своём примере.

int *mas = new int[кол записей в таблице - БД];

Тоесть всегда разное количество.
Я могу это число в переменную запомнить. А потом подставлять но это некрасиво, хочется определять. Плиз. хелп ми.
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458111
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--
There Ain't No Such Thing As A Free Lunch
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
include <algorithm>
include <vector>

stl::vector mas<int>( кол-во записей );

....

void somefunc( int a ) { /* секрет */ }

for_each( mas.start(), mas.end(), somefunc );

...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458114
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс! ошибся. вместо start() надо begin() ;-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
include <algorithm>
include <vector>

stl::vector mas<int>( кол-во записей );

....

void somefunc( int a ) { /* секрет */ }

for_each( mas.begin(), mas.end(), somefunc );

...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458158
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно попробовать распределять память malloc-ом и, затем, для вычисления длины массива пользоваться _msize из <malloc.h>
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458214
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_БалтикаМожно попробовать распределять память malloc-ом и, затем, для вычисления длины массива пользоваться _msize из <malloc.h>
Не портабельно. :-) Хотя многие считают, что нет систем кроме Виндовс, и Б.Г. пророк ее. :-))))
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33458306
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex83_sql int *mas = new int[кол записей в таблице - БД];

Тоесть всегда разное количество.
Я могу это число в переменную запомнить. А потом подставлять но это некрасиво, хочется определять. Плиз. хелп ми.

А в чем проблема? Я бы так и сделал. Хранить 2 байта где-нибудь - это проще чем вычислять везде размерность. Хотя условие задачи меня, если честно, пугает - если есть база данных, зачем создавать массив?
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33459718
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этой задече так надо.
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33459746
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbnv2) элементов массива в Вашем примере не более 100,

Что значит -"не более ста" - элементов в массиве РОВНО СТО. С номерами от 0 до 99.
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33459752
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlackStar _БалтикаМожно попробовать распределять память malloc-ом и, затем, для вычисления длины массива пользоваться _msize из <malloc.h>
Не портабельно. :-) Хотя многие считают, что нет систем кроме Виндовс, и Б.Г. пророк ее. :-))))
Если юзать что-то кроссплатформенное, типа Net'a, то проблем воще нет.
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33459760
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex83_sqlТоесть всегда разное количество.
Я могу это число в переменную запомнить. А потом подставлять но это некрасиво, хочется определять.

Определять - невозможно. Ты сам должен выделять память под массив и сам должен хранить его выделенный размер. Если ты хочешь, чтобы это за тебя делал кто-то другой, используй std::vector или другие классы динамических массивов (имеется в виду из других библиотек, помимо STL).
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33460173
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv alex83_sqlТоесть всегда разное количество.
Я могу это число в переменную запомнить. А потом подставлять но это некрасиво, хочется определять.

Определять - невозможно.
delete то определяет... Есле мне память не изменяет, стандартный new (в некоторых реализациях c++) пишет размер выделенной области в 2 или 4 байта, предшествующие распределенной области. Но тут опять
BlackStarНе портабельно. :-) Хотя многие считают, что нет систем кроме Виндовс, и Б.Г. пророк ее. :-))))
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33460192
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь. Я решил просто запоминать в переменной. а потом использовать.

Но было интересно как можно ещё. Спасибо.
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33460597
spectre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и я тебе о том же...
spectreА в чем проблема? Я бы так и сделал. Хранить 2 байта где-нибудь - это проще чем вычислять везде размерность...
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33460770
Forgottn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хы... Есть один безумный вариант, но он сработает только если до цикла больше не выделяется память... Можно считать количество свободной памяти до создания массива, используя что-нибудь вроде вот такой штуки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
#if ( defined(__COMPACT__)||defined(__LARGE__)||defined(__Huge__) )
/* for Compact, Large and Huge models of memory */
long heapinf() {
	long total = farcoreleft();
	farheapinfo heap;
	switch( farheapcheck() ) {
		case _HEAPEMPTY:
			total = - 1 ;
			break;
		case _HEAPCORRUPT:
			total = - 2 ;
			break;
		case _HEAPOK:
			heap.ptr = NULL;
			while(farheapwalk(&heap) != _HEAPEND)
				if(!heap.in_use)
					total += heap.size;
					break;
		}
	return total;
}
#else
/* for Tiny, Small and Medium models of memory */
long heapinf() {
	long total = coreleft();
	heapinfo heap;
	switch( heapcheck() ) {
		case _HEAPEMPTY:
			total = - 1 ;
			break;
		case _HEAPCORRUPT:
			total = - 2 ;
			break;
		case _HEAPOK:
			heap.ptr = NULL;
			while(heapwalk(&heap) != _HEAPEND)
				if(!heap.in_use)
					total += heap.size;
					break;
		}
	return total;
}
#endif

далее сравнивать это значение, с количеством выделенной и разницу делить на sizeof(int)

и опять же

авторBlackStar
Не портабельно. :-) Хотя многие считают, что нет систем кроме Виндовс, и Б.Г. пророк ее. :-))))
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33461247
BlackStar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже не то что не портабельно, а из гаубицы по мухам! :-))))
--
There Ain't No Such Thing As A Free Lunch
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33461419
vbnv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv vbnv2) элементов массива в Вашем примере не более 100,

Что значит -"не более ста" - элементов в массиве РОВНО СТО. С номерами от 0 до 99.

:) да, грешен -- нужно было еще оговорку "значимых для alex83_sql" и еще для верности "расположенных подряд, начиная с индекса 0"
...
Рейтинг: 0 / 0
Динамический массив, его размер.
    #33463146
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика
delete то определяет...

Кто тебе сказал ? Обманули значит.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив, его размер.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]