Столкнулся с такой проблемой: необходимо таблицу stringgrid заполнить значениями '1' и '0' по такому принцыпу
для 2х столбцов:
Код
00
01
10
11
для 3х столбцов
Код
000
001
010
011
100
101
110
111
Причем количество столбцов может быть любым например 10, и заполнение таблицы происходит по такому принцыпу. Помогите разобраться.
Первые 2 строчки заполнил обычным циклом, для остальных делал следующее:
Пробывал сначала бежать по каждой строчке и если встречается '1' то смотреть что после нее, если '0' , то в следующую записывалась '1' если после '1' всречалась снова '1' то '1' записывалась после текущей позиции.
k:=strtoint(kolvo_el);
stringgrid1.ColCount:=k;//количество колонок
if (k mod 2)>0 then
begin
stringgrid1.RowCount:=sqr(k);
end
else
begin
stringgrid1.RowCount:=sqr(k)+1;
end;
i:=stringgrid1.colCount-1;
j:=1;
kk:=0;
for x:=0 to stringgrid1.RowCount-1 do //stringgrid1.RowCount-1
begin
for y:=0 to stringgrid1.ColCount-1 do
begin
if x=0 then
begin
stringgrid1.Cells[i,1]:=inttostr(0);
dec(i);
end;
if x=1 then
begin
if y=0 then
begin
stringgrid1.Cells[i,2]:=inttostr(1);
dec(i);
end
else
begin
stringgrid1.Cells[i,2]:=inttostr(0);
dec(i);
end;
end;
if (x=2)or(x>2){and(x<>stringgrid1.ColCount-1)} then
begin
if i=0 then
begin
i:=stringgrid1.ColCount-1;
end;
if stringgrid1.Cells[i,j-1]=inttostr(1) then
begin
if stringgrid1.Cells[i-1,j-1]=inttostr(0) then
begin
stringgrid1.Cells[i-1,j]:=inttostr(1);
end;
if stringgrid1.Cells[i-1,j-1]=inttostr(1) then
begin
stringgrid1.Cells[i+1,j]:=inttostr(1);
end;
{stringgrid1.Cells[i,j]:=inttostr(1); }
end;
stringgrid1.cells[i,j]:='0';
dec(i);
end;
end;
{if (x=0)or(x=1)or(y=0) then}
i:=stringgrid1.ColCount-1;
inc(j);
end;
end;
Затем пробывал бежать по каждому столбцу т.е. если последний столбец, то заполняется так 0,1,0,1,0,1......
предпоследний так 00,11,00,11,00........ и т.д. Тут столкнулся с проблемой как реализовать такой цикл.
kolvo_el:=edit1.Text;
label1.Caption:=kolvo_el;
k:=strtoint(kolvo_el);
stringgrid1.ColCount:=k;//количество колонок
if (k mod 2)>0 then
begin
stringgrid1.RowCount:=sqr(k);
end
else
begin
stringgrid1.RowCount:=sqr(k)+1;
end;
i:=stringgrid1.colCount-1;
j:=1;
kk:=0;
for y:=0 to stringgrid1.RowCount-1 do
begin
for m:=0 to 1 do
begin
stringgrid1.Cells[i,j]:=inttostr(m);
inc(j);
end;
end;
//i:=stringgrid1.ColCount-1;
end;
P.S. Заранее благодарен за помощь