Вниз
Скачать: CL | DM;

Как двумерному массиву присвоить элементы одномерного?   Найти похожие ветки 

← →
smman   (2010-04-14 10:20) [0]

Как двумерному массиву присвоить элементы одномерного?


← →
Anatoly Podgoretsky ©   (2010-04-14 10:23) [1]

> smman  (14.04.2010 10:20:00)  [0]

Можно слева направа, а можно сверху вниз


← →
smman   (2010-04-14 10:25) [2]

Можно пример?


← →
Leonid Troyanovsky ©   (2010-04-14 10:28) [3]


> smman   (14.04.10 10:25) [2]

> Можно пример?

for i:= Low(a) to High(a) do b[i, 0] := a[i];

--
Regards, LVT.


← →
smman   (2010-04-14 10:32) [4]

почему b[i, 0]?

при компиляции выдает ошибку:

[Error] Unit1.pas(46): Constant expression violates subrange bounds


← →
oxffff ©   (2010-04-14 10:33) [5]


> b[i, 0]


b[0,i]?


← →
oxffff ©   (2010-04-14 10:35) [6]


> smman   (14.04.10 10:32) [4]
> почему b[i, 0]?
>
> при компиляции выдает ошибку:
>
> [Error] Unit1.pas(46): Constant expression violates subrange
> bounds


Вместо 0 видимо поставить 1 надо. И поменять местами.


← →
smman   (2010-04-14 10:36) [7]


> b[0,i]?

тоже самое:
[Error] Unit1.pas(46): Constant expression violates subrange bounds


← →
brother ©   (2010-04-14 10:37) [8]

> Как двумерному массиву присвоить элементы одномерного?

приведи объявления массивов...


← →
oxffff ©   (2010-04-14 10:38) [9]


> smman   (14.04.10 10:36) [7]
>
> > b[0,i]?
>
> тоже самое:
> [Error] Unit1.pas(46): Constant expression violates subrange
> bounds


Поставь 1 вместо 0. Или дай описалово массива. Надеюсь он у тебя статический. В противном случае метод не подойдет.


← →
smman   (2010-04-14 10:38) [10]


> Вместо 0 видимо поставить 1 надо. И поменять местами.

если поменять местами то двумерный массив не корректно заполняется


← →
smman   (2010-04-14 10:40) [11]


> приведи объявления массивов...

 a: array[1..16] of integer;
 b: array [1..4, 1..4] of integer;

В b нужно записать содержимое a


← →
oxffff ©   (2010-04-14 10:44) [12]


> smman   (14.04.10 10:38) [10]


А это не врети. (Из разговора бабки с АТС)

var a:array[0..10,1..20] of integer;
   i:integer;
begin
a[2,1]:=77;
i:=41;
showmessage(inttostr(a[0,i]))?


← →
И. Павел ©   (2010-04-14 10:46) [13]

a: array[1..16] of integer;
 b: array [1..4, 1..4] of integer absolute a;


← →
oxffff ©   (2010-04-14 10:49) [14]


> smman   (14.04.10 10:38) [10]
>
> > Вместо 0 видимо поставить 1 надо. И поменять местами.
>
> если поменять местами то двумерный массив не корректно заполняется


procedure TForm4.FormCreate(Sender: TObject);
var a: array[1..16] of integer;
   b: array [1..4, 1..4] of integer;
   c:integer;
begin
for c:=1 to 16 do
  begin
  a[c]:=c;
  b[1,c]:=a[c];
  end;
for c in b do Memo1.Lines.Add(inttostr(c));
end;

??


← →
smman   (2010-04-14 10:49) [15]


>  b: array [1..4, 1..4] of integer absolute a;

Объясните пожалуйста, что такое absolute a и как это работает?


← →
oxffff ©   (2010-04-14 10:51) [16]


> И. Павел ©   (14.04.10 10:46) [13]


:)


← →
12 ©   (2010-04-14 10:51) [17]

b[i,j]:=a[i*4 + j];


← →
smman   (2010-04-14 10:54) [18]


> procedure TForm4.FormCreate(Sender: TObject);
> var a: array[1..16] of integer;
>    b: array [1..4, 1..4] of integer;
>    c:integer;
> begin
> for c:=1 to 16 do
>   begin
>   a[c]:=c;
>   b[1,c]:=a[c];
>   end;
> for c in b do Memo1.Lines.Add(inttostr(c));
> end;
>
> ??

он так правильно только по столбцам заполнится, а если поменять местами b[c,1] и вывести в stringgrid, то получится что будет заполнена только первая строка, а остальные значения будут нулевые.

for m:=1 to 4 do
for n:=1 to 4 do
 stringgrid1.Cells[m,n]:=IntToStr(b[m,n]);


← →
И. Павел ©   (2010-04-14 10:57) [19]

> Объясните пожалуйста, что такое absolute a и как это работает?

A и B будут делить одну и ту же память. При изменении A изменится B и наоборот.


← →
oxffff ©   (2010-04-14 10:58) [20]


>
> он так правильно только по столбцам заполнится, а если поменять
> местами b[c,1] и вывести в stringgrid, то получится что
> будет заполнена только первая строка, а остальные значения
> будут нулевые


Менять не нужно. Нужно именно b[1,c]. Если будет [c,1], то может быть очень плохо.


← →
Anatoly Podgoretsky ©   (2010-04-14 11:00) [21]

Я всегда говорил, что нам не хватает еще одной конференции.


← →
Anatoly Podgoretsky ©   (2010-04-14 11:01) [22]


> В b нужно записать содержимое a

Каким образом, уже второй раз спрашиваю.


← →
smman   (2010-04-14 11:01) [23]


> A и B будут делить одну и ту же память. При изменении A
> изменится B и наоборот.

Спасибо.


> Менять не нужно. Нужно именно b[1,c]. Если будет [c,1],
> то может быть очень плохо.

А как тогда можно сделать заполнение по строкам, а не по стоблцам?


← →
smman   (2010-04-14 11:02) [24]


> Каким образом, уже второй раз спрашиваю.

слева направо :)


← →
oxffff ©   (2010-04-14 11:05) [25]


> А как тогда можно сделать заполнение по строкам, а не по
> стоблцам?

Вместо

stringgrid1.Cells[m,n]:=IntToStr(b[m,n]);

написать

stringgrid1.Cells[n,m]:=IntToStr(b[m,n]);


← →
Anatoly Podgoretsky ©   (2010-04-14 11:06) [26]

> smman  (14.04.2010 11:02:24)  [24]

Сначала изменяешь индекс по колонкам, а потом, если надо больше одной строки, то далее по строками.


← →
smman   (2010-04-14 11:08) [27]

Все получилось, всем спасибо за помощь!

Но блин, "absolute a", штука, конечно, прикольная :)


← →
12 ©   (2010-04-14 11:14) [28]


> absolute a", штука, конечно, прикольная

если нужно представить одно как другое
но не если нужна копия


← →
smman   (2010-04-14 11:16) [29]


> но не если нужна копия

почему как копия такой вариант не подходит?


← →
smman   (2010-04-14 11:34) [30]

Удалено модератором
Примечание: Один вопрос одна тема.


← →
12 ©   (2010-04-14 11:39) [31]


> почему как копия такой вариант не подходит?

если нужна копия массива - то не подходит absolute.
абсолют - это когда второй указатель указывает на то же самое место в памяти, что и первый.
Изменится a[x] - изменится и b[n,m].


> какой компонент лучше всего использовать для вывода двумерного
> массива

MyStringGrid ^)
перегрузи метод


← →
smman   (2010-04-14 11:45) [32]

Удалено модератором
Примечание: Второй вопрос здесь не обсуждаем, было же сказано модератором



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.048 c
2-1275547550
My__Nick__Name
2010-06-03 10:45
2010.08.27
Unicode в Open Office 3


2-1266493951
AndreyZAA
2010-02-18 14:52
2010.08.27
Поиск в базе данных с помощью Locate, SQL или только переборкой?


15-1272745804
Юрий
2010-05-02 00:30
2010.08.27
С днем рождения ! 2 мая 2010 воскресенье


2-1266218226
Tonick
2010-02-15 10:17
2010.08.27
Сбор данных о характеристиках ПК


6-1216658120
evil_mike
2008-07-21 20:35
2010.08.27
tclientsocket без компонента на форме..




   Наверх