Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
1

Динамический массив

14.10.2010, 18:35. Показов 2290. Ответов 5

Author24 — интернет-сервис помощи студентам
Вопроса два, первый простой, второй по занятнее
1. Как инициализировать весь массив нулями (или же как должен быть объявлен массив что бы это само происходило)
2. как определить длинну подмассива состоящего только из нулевых байтов (только идею типа перебором каждого символа не предлагать...)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2010, 18:35
Ответы с готовыми решениями:

Используя многострочный редактор и динамический массив ввести массив произвольного размера
Используя многострочный редактор и динамический массив ввести массив, состоящий из произвольного...

Создать двумерный динамический массив произвольного размера NxN (размер ввести). Заполнить массив случайным об
Создать двумерный динамический массив произвольного размера NxN (размер ввести). Заполнить массив...

Массив строк в Memo, динамический массив
Помогите пожалуйста! Нужно решить задачу по динамическому массиву: Дан массив строк в Memo1....

Динамический массив
Я создаю динамический массив, и хочу заполнить его чифрами 1 или 0 procedure...

5
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
14.10.2010, 20:03 2
Цитата Сообщение от Vas-e-na Посмотреть сообщение
Вопроса два, первый простой, второй по занятнее
1. Как инициализировать весь массив нулями (или же как должен быть объявлен массив что бы это само происходило)
2. как определить длинну подмассива состоящего только из нулевых байтов (только идею типа перебором каждого символа не предлагать...)
1ое ты прав не сложно
юзай FillChar - есть такая процедура

а над вторым нужно подумать, попробуй рекурсивный метод а не циклический только по правде говоря оба они перебором
1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
15.10.2010, 11:26 3
Цитата Сообщение от Vas-e-na Посмотреть сообщение
1. Как инициализировать весь массив нулями (или же как должен быть объявлен массив что бы это само происходило)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
const
  N = 100;
var
  Arr : array of Integer;
begin
  //Задание длины и обнуление элементов.
  SetLength(Arr, N);
  FillChar(Arr[0], N * SizeOf(Arr[0]), 0);
  (*
  for i := 0 to High(Arr) do begin
    Arr[i] := 0;
  end;
  *)
end;
FillChar() делает то же самое, что и for i := 0 to ... По скорости - одинаково. Более того, код FillChar() использует подобный for i код.
Цитата Сообщение от Vas-e-na Посмотреть сообщение
2. как определить длинну подмассива состоящего только из нулевых байтов (только идею типа перебором каждого символа не предлагать...)
От перебора никуда не уйти. Вопрос - надо ли перебирать все элементы и откуда его начинать. Выбор способа зависит от метаданных - т. е. данных о содержимом массива - они могут быть получены, перед этапом поиска - например, во время записи значений в массив. Здесь всё банально на самом деле - чтобы выяснить где подмассив с нулями начался/закончился, надо брать элемент и сверять на ноль/не ноль. Методы здесь могут быть разными - перебор от начала до конца, либо исследование значений не по порядку - метод бисекций, например. Если, например, известно, что имеется достаточно большие подмассивы из нулей, тогда удобнее исследовать элементы с шагом, равным предполагаемой минимальной длине подмассива. При обнаружении нуля ведём пербор в обоих направлениях - влево и вправо. И т. д. Если подмассивы с нулями могут быть небольшими - тогда проще выполнить последовательный пербор всех элементов.
1
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
15.10.2010, 12:38 4
Я тоже пришел к мнению Mawrat, для второго пункта
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
15.10.2010, 12:57  [ТС] 5
Mawrat, т.е. как я понял, что в первом случае, что во втором придется перебирать массив?
PS а вот по поводу этого есть что-то:
Цитата Сообщение от Vas-e-na Посмотреть сообщение
или же как должен быть объявлен массив что бы это само происходило
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
15.10.2010, 13:22 6
Когда выделяется память для дин. массива, то происходит автоматическое обнуление байтов. Память, видимо, выделяется через функцию, подобную AllocMem().
А вот память для строк типа AnsiString или WideString выделяется без обнуления байтов.
Так, по крайней мере, в Delphi 7.
1
15.10.2010, 13:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2010, 13:22
Помогаю со студенческими работами здесь

Динамический массив
procedure TForm1.Button1Click(Sender: TObject); var l:array of string; i,u:integer; begin...

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

Динамический массив
Есть динамический массив, но я не знаю сколько в нем будет элементов. Как я могу поставить ему...

Динамический массив?
Как правильно записать в файл-стрим на delphi динамический массив и прочитать его из файла?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru