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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2007, 09:04   #11
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Enko Посмотреть сообщение
Еще вопросы:
1. Как лучше представлять многомерный массив: обычным для Delphi способом???
Принципиальной разницы не вижу.
Хотя во всех примерах используют StringGrid.
Alex21 вне форума Ответить с цитированием
Старый 03.09.2007, 13:08   #12
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Вы меня совсем разочаровываете , по-моему нормальная формулировка.
Возьмите хотя бы первый вопрос о таймере, в каком сообщении по счету вы получили решение? А могли бы в первом. Остальные вопросы не многим лучше.
Цитата:
Да, совершенно верно, вектор находится в множестве если он покомпонентно совпадает с одним из элементов множества, вообще говоря я не утверждаю что эти векторы должны быть записаны именно как массивы, может для осуществления процедуры сравнения векторов есть более удобная форма их представления в памяти.
Вектор это прямая на сетке коодинат, имеющая направление и определенную длину? А если представить вектор массивом то в элементах массива будут координаты точек? Так?
Если так, то массивы тут не надо. Чтобы сравнить такие векторы достаточно знать начальную точку и конечную. А представить их так
Код:
type
TVector = record
x0,y0,x1,y1: integer;
end;

var
Vectors: array of TVector;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.09.2007, 19:08   #13
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Enko Посмотреть сообщение
2. Можно ли получить листинг кода программы, написанной в Delphi?
Если имеется ввиду из ехе файла получить код на Делфи, то нельзя. Максимум - код на ассемблере
pu4koff вне форума Ответить с цитированием
Старый 03.09.2007, 22:08   #14
Enko
Пользователь
 
Регистрация: 30.08.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение

Вектор это прямая на сетке коодинат, имеющая направление и определенную длину? А если представить вектор массивом то в элементах массива будут координаты точек? Так?
Если так, то массивы тут не надо. Чтобы сравнить такие векторы достаточно знать начальную точку и конечную.
Нет, я имел ввиду не геометрический вектор, а вектор как структуру данных из N упорядоченных компонентов.

И уточнение к другому вопросу, о формировании физического адреса:
Цитата:
Описание массивов
Как структура представления массив является упорядоченным множеством элементов определенного типа. Упорядоченность массива определяется набором целых чисел, называемых индексами, которые связываются с каждым элементом массива и однозначно определяют его расположение среди других элементов массива. Локализация конкретного элемента массива — ключевая задача при разработке любых алгоритмов, работающих с массивами. Ее сложность прямо зависит от размерности массива.
Наиболее просто представляются одномерные массивы. Соответствующая им структура хранения — это вектор. Она однозначна и представляет собой просто последовательное расположение элементов в памяти. Чтобы локализовать нужный элемент одномерного массива, достаточно знать его индекс. Так как ассемблер не имеет средств для работы с массивом как структурой данных, то для использования элемента массива необходимо вычислить его адрес. Для вычисления адреса i-ro элемента одномерного массива можно использовать формулу:
Аi=АБ+i*lеn
Здесь АБ — адрес первого элемента массива размерностью n, i — индекс (i=0.. n-1), len — размер элемента массива в байтах. Заметьте, что при таком определении можно не говорить о типе элементов массива. В общем случае они также могут быть структурированными объектами данных.
Представление двумерных массивов немного сложнее. Здесь мы имеем случай, когда структуры хранения и представления различны. О структуре представления говорить излишне — это матрица. Структура хранения остается прежней — вектор. Но теперь его нельзя без специальных оговорок интерпретировать однозначно. Все зависит от того, как решил разработчик программы «вытянуть» массив — по строкам или по столбцам. Наиболее естествен порядок расположения элементов массива — по строкам. При этом наиболее быстро изменяется последний элемент индекса. К примеру, рассмотрим представление на логическом уровне двумерного массива Ац размерностью nxm, где 0 < i < n—I, 0 < j < m-1:
а00 а01 а02 а03
а10 а11 а12 а13
а20 а21 а22 а23
а30 а31 а32 а33
Соответствующее этому массиву физическое представление в памяти — вектор — будет выглядеть так:
а00 а01 а02 а03а10 а11 а12 а13а20 а21 а22 а23а30 а31 а32 а33
Номер конкретного элемента массива в этой, уже как бы ставшей линейной, последовательности определяется адресной функцией, которая устанавливает положение (адрес) в памяти этого элемента исходя из значения его индексов:
aij=n*i + j.
Для получения адреса элемента массива в памяти необходимо полученное значение умножить на размер элемента и сложить с базовым адресом массива. Аналогично осуществляется локализация элементов в массивах большей размерности.Таким образом, преобразование многомерной, в общем случае логической структуры массива в одномерную физическую структуру производится путем ее линеаризации по строкам или столбцам. В первом случае, быстрее всего изменяется последний индекс каждого элемента, во втором — первый индекс. Недостаток описанного способа локализации элемента массива в том, что процесс вычисления адреса подразумевает выполнение операций сложения и умножения. Как известно, они не являются быстрыми. Существует метод Дж. Айлиффа, с помощью которого можно исключить операцию умножения из процесса вычисления индекса.
Меня интересует как происходит представление многомерных массивов в Delphi, так или как-то иначе? может методом Дж. Айлиффа?

Последний раз редактировалось Enko; 03.09.2007 в 22:21.
Enko вне форума Ответить с цитированием
Старый 03.09.2007, 22:09   #15
Enko
Пользователь
 
Регистрация: 30.08.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Если имеется ввиду из ехе файла получить код на Делфи, то нельзя. Максимум - код на ассемблере
Я хочу получить то, что видно в отладчике - коды и команды.
Enko вне форума Ответить с цитированием
Старый 03.09.2007, 23:07   #16
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

что же вы людям мозги парите, нельзя было эту статью в первом вопросе привести?
почитайте ответы - ни один из отвечавших не понял о чем речь
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 04.09.2007, 17:08   #17
Enko
Пользователь
 
Регистрация: 30.08.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
что же вы людям мозги парите, нельзя было эту статью в первом вопросе привести?
почитайте ответы - ни один из отвечавших не понял о чем речь
Я недавно эту статью нашел.

Чем отличаются определение переменных в процедурах
Например:
My_Proc(var x: MyType);
My_Proc(x: MyType);
My_Proc(const x: MyType);
Правильно ли я понял, что в перврм случае в стек загружается адрес, а во втором и третьем-значение?
Каким же способом лучше определять переменные?

Последний раз редактировалось Stilet; 01.02.2010 в 10:43.
Enko вне форума Ответить с цитированием
Старый 07.09.2007, 02:00   #18
Tokolist
Пользователь
 
Аватар для Tokolist
 
Регистрация: 04.09.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Enko Посмотреть сообщение
Чем отличаются определение переменных в процедурах
Например:
My_Proc(var x: MyType);
My_Proc(x: MyType);
My_Proc(const x: MyType);
Правильно ли я понял, что в перврм случае в стек загружается адрес, а во втором и третьем-значение?
Каким же способом лучше определять переменные?
для начала, в Delphi по умолчанию используется модель register, т.е. стек не используется
подробнее смотри Calling conventions

Вот простой пример

Код:
procedure Proc(Variable: Integer);
begin
  Variable := 100;
end;
Код:
var
  Variable: Integer;
begin
  Variable := 1;
  Proc(Variable);
переменная Variable после выполнения Proc будет иметь следующие значения:
при Proc(Variable: Integer) -- 1
при Proc(var Variable: Integer) -- 100
при Proc(const Variable: Integer) -- вообще не скомпилируется

теперь подробнее
1. если мы ничего не указываем, то для тела процедуры создается копия передаваемой переменной и в процедуре мы уже работаем с ней
2. если указано var мы работаем с переменной по ссылке, т.е. работаем с самой переменной, а не с ее копией
3. если указано const, то это то же, что и var, только мы не можем изменять переменную в теле ф-и

Для чего же нужны var и const?
1. var нужен для изменения переменной по ссылке
2. var и const нужны для экономии ресурсов, поскольку не создается копия переменной. особенно это важно для строковых типов, где рекомендуется указывать const
3. const в отличии от var дает нам уверенность, что мы случайно не изменим переменную

кроме того есть еще out

подробнее смотри Parameter semantics
Tokolist вне форума Ответить с цитированием
Старый 08.09.2007, 20:47   #19
Enko
Пользователь
 
Регистрация: 30.08.2007
Сообщений: 13
По умолчанию

Есть русско-английский словарь(т.е каждому русскому слову поставлено в соответствие английское слово), нужно ввести русское слово и программа должна найти соответствующее английское слово или сообщить что такого слова в словаре нет.
Как лучше представить в памяти этот словарь для более быстрого поиска, не перебирать же подряд все слова, сравнивая с нужным.
Enko вне форума Ответить с цитированием
Старый 09.09.2007, 12:42   #20
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

1 Что за словарь(в смысле вы писали или используется какой-то другой)? Имеет смысл просто отсортировать слова по буквам и сохранить в отдельный файл(например а.ff,где ff тизированый файл), а оттуда уже делать чтение и сравнивание(функция pos).
2. насчет памяти- имели ввиду как представить словарь на винчестере? Если нет то не понял для чего его грузить в память.
bill вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПАСИБО модераторам раздела "Общие вопросы Delphi!" ) artemavd Свободное общение 3 04.10.2008 02:44
сравнить разные строки Katovski Общие вопросы Delphi 8 02.05.2008 21:10
Вопросы по Delphi 2007 Энинг Помощь студентам 22 04.01.2008 14:40
С++ и Delphi. Вопросы UnD)eaD)Snake Общие вопросы C/C++ 3 21.08.2007 20:11
Разные справочники по Delphi Egych Свободное общение 3 12.02.2007 12:14