Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.07 c
2-1268205413
Вася
2010-03-10 10:16
2010.08.27
TCategoryPanel


15-1268292135
boriskb
2010-03-11 10:22
2010.08.27
ACADEMIA


2-1270804414
droidron
2010-04-09 13:13
2010.08.27
Mozzilla handle


4-1236677806
Demo_nik
2009-03-10 12:36
2010.08.27
как перехватить функцию копирования


2-1274433156
ixen
2010-05-21 13:12
2010.08.27
Как узнать путь к bat файлу запускающий exe





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский