сделать копию массива

Добавлено:
06.05.2016 07:41:02
tmpnikl
Есть одномерный массив символов(где-то 25 элементов), теперь этот массив надо скопировать (а=в) в цикле(от 1 до 255), в зависимости от условия случайного числа(чётное копируем, нечётное не копируем)..., т.е. я заранее не знаю сколько будет этих массивов, чтоб заранее их описать.. как можно это реализовать?
Re: сделать копию массива

Добавлено:
06.05.2016 10:12:17
Zhbr
Я так понял вся проблема как создать n-ое кол-во массивов?
Если да, то как вариант воспользоваться указателями:
- Код: Выделить всё
type
PSpis_massivov = ^Spis_massivov;
Spis_massivov = record
// тут Описание своего массива
next: PSpis_massivov //указатель на след запись или nil если последний
Ну а потом с помощью New создаешь нужное количество массивов и заполняешь их.
Re: сделать копию массива

Добавлено:
06.05.2016 10:21:39
resident
tmpnikl
Как будто в школе не учились. Любая задача оформляется как:
1. Что дано
2. Что требуется
3. Решение
Что требуется не ясно. "Что" - это не действие типа вашего "скопировать", а то какие данные должны быть на выхлопе.
Re: сделать копию массива

Добавлено:
19.08.2016 16:26:37
serge#LVL
Есть одномерный массив символов(где-то 25 элементов), теперь этот массив надо скопировать (а=в) в цикле(от 1 до 255), в зависимости от условия случайного числа(чётное копируем, нечётное не копируем)..., т.е. я заранее не знаю сколько будет этих массивов, чтоб заранее их описать.. как можно это реализовать?
можно сделать через динамические массивы и функцию Copy().
- Код: Выделить всё
procedure Clon(nclons: word);
var
ArOrigin: array of char; // клонируемый массив
ArClon,ArClon2: array of array of char; // 1ая размерность = кол-ву клонов, 2-ая размерность = размерности исходного массива
i,j: longword;
begin
SetLength(ArOrigin,26);
// массив заполняется заглавными буквами англ. алфавита (26 букв)
for i:=Low(ArOrigin) to High(ArOrigin) do
ArOrigin[i]:=Char(i+65);
// устанавливаем размерность массива
SetLength(ArClon,nclons,High(ArOrigin)+1);
SetLength(ArClon2,nclons,High(ArOrigin)+1);
// клонируем массив в цикле
for i:=0 to nclons-1 do
ArClon[i]:=copy(ArOrigin);
// можно копировать указатель, а не массив
// но в правильности сомневаюсь
for i:=0 to nclons-1 do
Pointer(ArClon2[i]):=@ArOrigin[0];
end;