Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Сообщ.
#1
,
|
|
|
Существует два массива один на 300 элементов второй на 14. Мне нужно заполнить один массив до конца данными другого массива при этом оставляя интервал каждые две ячейки. Эту проблему мне удалось решить с помощью mod. Однако мне нужно сделать так чтобы когда закончился второй массив он с последней позиции где прервался (в первом массиве) начался заполнятся заново и так пока не достигнет до конца первого массива (т.е. придел 300 ячейка). Вот скриншот:
Прикреплённый файлimg1.jpg (34,68 Кбайт, скачиваний: 54) Как это сделать? Мой код, где заполнение происходит один раз (только первые 14 элементов). unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Data : array of Integer; Data2 : array of Integer; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var i,j,k,m:Integer; begin SetLength(Data,300); SetLength(Data2,14); for k := Low(Data2) to High(Data2) do begin Data2[k]:=k; end; for i := Low(Data) to High(Data) do begin Data[i]:=0; end; m:=0; for j := Low(Data) to High(Data) do begin if (j mod 3 = 1) and (m<=High(Data2)) then begin Data[j]:=Data2[m]; Inc(m); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var j:Integer; begin for j := Low(Data) to High(Data) do begin Memo1.Lines.Add(IntToStr(Data[j])); end; end; end. |
Сообщ.
#2
,
|
|
|
Заменить
if (j mod 3 = 1) and (m<=High(Data2)) then begin Data[j]:=Data2[m]; Inc(m); end; if j mod 3 = 1 then begin Data[j]:=Data2[m]; Inc(m); if m > High(data2) then m := Low(Data2); end; |
Сообщ.
#3
,
|
|
|
Проверила, работает.
|