Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 109

/ вопрос открыт /

Здравствуйте!
В Турбо Паскаль нужно по условию задачи задать массив размерностью 1000*1000. Я перепробовал разные варианты. Выдает ошибку 22 (слишком большая структура).
Динамических массивов В ТР нет. Подскажите пожалуйста, как мне поступить.

puporev Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: puporev (статус: 2-ой класс)
Вопрос отправлен: 9 ноября 2007, 10:21
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, puporev!
Если у Вас не получается стандартная конструкция кода

var a: array[0..999, 0..999]: Integer;
то попробуйте "поиграться" с распределением памяти кучи с помощью GetMem.
type TBigArray = array[0..999, 0..999] of Integer;
var a: ^TBigArray;
begin
   GetMem(a, SizeOf(TBigArray));
// далее используете указатель ^ на массив a
   a^[0]:=0;
   a^[1]:=1;
// и так далее
   FreeMem(a);
end;
Так же можно попробовать использовать вместо GetMem() -> New(), а вместо FreeMem() -> Dispose().
Я точно не помню, что именно присутствует в ТурбоПаскале, но однознаяно могу сказать, что одно из них точно есть в ТурбоПаскале версии 3.02а, бо сам их там юзал.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 9 ноября 2007, 15:09


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 26 марта 2008, 19:49; участников в обсуждении: 4.
puporev

puporev (статус: 2-ой класс), 9 ноября 2007, 16:16 [#1]:

Здравствуйте Feniks.
Не получается. Как разрешал максимально [1..181,1..181], так и разрешает. Письмо Вам отправил, но в ответ от автомата пришло малопонятное сообщение, поэтому я не уверен, что письмо дошло, и пишу здесь.
Feniks

Feniks (статус: Бакалавр), 9 ноября 2007, 17:13 [#2]:

Я не знаю на какой там автомат Вы отправляли мне письмо. Видимо надо было использовать пулемет... ;-)
И я не экстрасен, и не могу знать, что именно у Вас не получается, какие и где ошибки. Приведите весь кусок кода. В ТурбоПаскале точно есть динамическая память и указатели. Какой у Вас ТурбоПаскаль, какая версия ? Попробуйте поискать в хелпе эти функци. И поищите директивы компилятора, это строки вида {$R+}, т.е. они пишутся в фигурных скобках и с долларом. Возможно есть такая директива для компиляции больших массивов или выделения памяти для них.
А так же можете попробовать поискать тут:
http://www.pascaler.ru/
http://pascal.pud.ru/
http://pasc.al.ru/
Feniks

Feniks (статус: Бакалавр), 9 ноября 2007, 17:40 [#3]:

Еще тут есть инфа о динамики...
http://khpi-iip.mipk.kharkiv.edu/library/datastr/book_sod/guap/index1.htm
Вадим К

Вадим К (статус: Академик), 9 ноября 2007, 17:41 [#4]:

В турбопаскале так просто создать такой большой массив нельзя. ведь даже если элементы будут типа byte, то такой массив займёт около мегабайта. а в Досе прикладная программа без специальных "расширителей памяти" не может выделить больше 640 килобайт. Мало того, нельзя за один раз выделять больше 64килобайт. Вы поможе делаете массив типа Integer (а он под досом и турбопаскалем имел размер 2 байта) - вот и получается размер 181на 181 (181*181*2 = 65522)

Может вы назвёте причину, по которой вам под турбопаскалем понадобились такие большие массивы?
Галочка "подтверждения прочтения" - вселенское зло.
puporev

puporev (статус: 2-ой класс), 9 ноября 2007, 18:02 [#5]:

Спасибо вам Feniks и Вадим за участие. Скорее всего в задаче была опечатка, т.к. речь там шла о листе бумаги в клетку, а я не встречал листов 1000*1000 клеток. Кстати директива $M не поможет, что видно из сообщения Вадима. На письма не отвечаю, потому что на тот адрес, который выдается для ответа у меня письма не идут. Еще раз спасибо. До встречи на сайте.
Jugerbot

Jugerbot (статус: Посетитель), 26 марта 2008, 19:21 [#6]:

А ларчик просто открывался.
Пишем:


type
b=array[0..999] of integer;
....
var
a:array[0..999] of ^a;

обращаться к массиву
a[x]^[y]
Jugerbot

Jugerbot (статус: Посетитель), 26 марта 2008, 19:49 [#7]:

Прошу прощенья.

...
var
a:array[0..999] of ^b;
...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 12 декабря 2017, 19:10
Выполнено за 0.04 сек.
Рейтинг@Mail.ru