Страница 1 из 1

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

СообщениеДобавлено: 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;