Главная страница
    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
Время: 2.903 c
15-1274167672
ixen
2010-05-18 11:27
2010.08.27
Ошибка при подключении к RDP через UserGate 5


15-1264517700
Nucer
2010-01-26 17:55
2010.08.27
Proxy сервер на 1000+ соединений на Delphi с исходным кодом


2-1273332902
Tassadar
2010-05-08 19:35
2010.08.27
Runtime error - array of string как атрибут класса


6-1218124422
dozcent
2008-08-07 19:53
2010.08.27
TSeverThead, TServerSocket


15-1262347734
Kerk
2010-01-01 15:08
2010.08.27
Мысли про различия и эволюцию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский