Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2010, 09:39   #1
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию Забавная и малоизвестная особенность работы с массивами в Pascal/Delphi

Добрый день.
Наткнулся на забавную фишку (чисто случайно ).
Массивы при присвоении позволяют оперировать целыми строками.

вот пример:
Код:
var a: array[1..5, 1..5] of integer;
    i,j : integer;
begin
  for i := 1 to 5 do
    for j := 1 to 5 do
      a[i, j] := j*10 + i;
  a[1] := a[2];
...


p.s. несмотря на то, что я разместил это сообщение в разделе "Паскаль", всё вышесказанное в полной мере относится и к Delphi!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2010, 12:31   #2
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

И что тут такого?
n-мерные массивы это массив массивов.
Так что здесь у вас a[1] как и a[2] это массивы. И одну массиву вы присваиваете другой.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 28.09.2010, 21:27   #3
zevs116
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 21
По умолчанию

ничего он не оперирует..., ошибку сразу выдает про размерность
zevs116 вне форума Ответить с цитированием
Старый 28.09.2010, 22:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
ничего он не оперирует..., ошибку сразу выдает про размерность
Глупости!
Вам в качестве доказательства что нужно? EXE-шник, скриншот?
К слову, а Вы чем компилируете?


Цитата:
Сообщение от XeruH
n-мерные массивы это массив массивов.
Так что здесь у вас a[1] как и a[2] это массивы. И одну массиву вы присваиваете другой.
Угу, коллега, согласен.
проверил, действительно, присвоение массивов никаких проблемов не возникает и так:
Код:
var A,B : array[1..5,1..5] of integer;
...
  B := A;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2010, 11:03   #5
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

да лишь бы типы были одинаковые и размерности. что угодно присвоить можно будет.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 29.09.2010, 12:00   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А мне больше нравится процедура move...
Как-то универсальнее с ней.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции для работы с динамическими массивами iiunbreakableii Общие вопросы Delphi 8 17.07.2012 14:04
Рекомпиляция запроса или особенность MS SQL? Stilet SQL, базы данных 2 19.04.2010 12:27
Забавная вишка в StringGrid artemavd Общие вопросы Delphi 4 25.07.2009 16:48
работы с указателями и массивами... Катюшенька Помощь студентам 21 24.01.2009 12:17
Алгоритмы работы с двумерными массивами cudalover Помощь студентам 10 18.01.2009 13:00