Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: 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 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.056 c
2-1270210954
JohnKorsh
2010-04-02 16:22
2010.08.27
Смена MAC адреса.


2-1274515199
Fantasy
2010-05-22 11:59
2010.08.27
ICS THttpCli иза тсутствие help-а, пршу подсказать.


15-1275759433
Alkid
2010-06-05 21:37
2010.08.27
Code Review


15-1269540383
MAcKZloy
2010-03-25 21:06
2010.08.27
Построитель отчёта


15-1268649323
Из батника
2010-03-15 13:35
2010.08.27
Удаление каталога