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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение tmpnikl » 06.05.2016 07:41:02

Есть одномерный массив символов(где-то 25 элементов), теперь этот массив надо скопировать (а=в) в цикле(от 1 до 255), в зависимости от условия случайного числа(чётное копируем, нечётное не копируем)..., т.е. я заранее не знаю сколько будет этих массивов, чтоб заранее их описать.. как можно это реализовать?
tmpnikl
новенький
 
Сообщения: 15
Зарегистрирован: 18.11.2013 17:51:43

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

Сообщение Zhbr » 06.05.2016 10:12:17

Я так понял вся проблема как создать n-ое кол-во массивов?
Если да, то как вариант воспользоваться указателями:

Код: Выделить всё
type
   PSpis_massivov = ^Spis_massivov;
   Spis_massivov = record
    //  тут Описание своего массива
     next: PSpis_massivov   //указатель на след запись или nil если последний


Ну а потом с помощью New создаешь нужное количество массивов и заполняешь их.
Zhbr
новенький
 
Сообщения: 44
Зарегистрирован: 31.01.2014 02:34:21

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

Сообщение resident » 06.05.2016 10:21:39

tmpnikl
Как будто в школе не учились. Любая задача оформляется как:
1. Что дано
2. Что требуется
3. Решение

Что требуется не ясно. "Что" - это не действие типа вашего "скопировать", а то какие данные должны быть на выхлопе.
resident
энтузиаст
 
Сообщения: 602
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение serge#LVL » 19.08.2016 16:26:37

Есть одномерный массив символов(где-то 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;             
serge#LVL
новенький
 
Сообщения: 11
Зарегистрирован: 19.08.2016 13:17:36


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru