Решаю задачу, в которой нужен массив с таким диапазоном [1..1015]
Пишу так:
mass = array[int64] of int64;
Пишет, что слишком большой диапазон. Как с этим справится?
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
looogle |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго времени суток!
Решаю задачу, в которой нужен массив с таким диапазоном [1..1015] Пишу так: mass = array[int64] of int64;
Пишет, что слишком большой диапазон. Как с этим справится? |
IUnknown |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: ![]() ![]() ![]() |
Цитата Как с этим справится? Пересмотреть алгоритм решения. Максимальный размер массива для 16-битных компиляторов = 64К, а в более современных (например, в FPC) существует ограничение на количество элементов в массиве (их не может быть больше, чем high(PTRINT), то есть 2147483647) независимо от размера каждого элемента. |
looogle |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо.
![]() Уже начинаю понимать в чём подвох в задаче (в принципе в этом тоже подвох) |
ВеликийПавел |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
IUnknown полностью с вами согласен!.
можно попытаться сделать задачу с помощью динамической памяти. Но наверное в задаче есть разумное решение. |
IUnknown |
![]()
Сообщение
#5
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: ![]() ![]() ![]() |
Цитата можно попытаться сделать задачу с помощью динамической памяти Сколько надо динамической памяти для выделения места под 1015 элементов типа Int64, представляем себе? 8 * 1015 байт = 8 петабайт (8 миллионов Гб) ![]() |
Krjuger |
![]()
Сообщение
#6
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Да и вообще весьма сомнительна возможность работы с таким массивом.Даже если его побитово заполнять все равно 125 терабайт это перебор.С другой стороны если разбивать на части и отдельно делать какие нибудь манипуляции,то на это уйдут далеко не минуты.Странные какие то запросы.
|
Гость |
![]() ![]()
Сообщение
#7
|
Гость ![]() |
Скажите пожалуйста, нужно ли объявлять массив port.
Что неправильно в программе? И как работать с портом лтп1, не могу найтти полного описания. Код var a:real; a:=port[378]; writeln(a); end. |
Krjuger |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Неправильно то,что массив в паскале обьявляется совсем по другому.
a = array[1..378] of real; Еще неправильно то,что нету bеgin... Сообщение отредактировано: Krjuger - |
TarasBer |
![]()
Сообщение
#9
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А он не пытается объявить a как массив.
Он пытается работать с "массивом" Port. В ТурбоПасе его объявлять не надо, он вшит в язык. В 32-битных версиях он работать, очевидно, не может. -------------------- |
Гость |
![]() ![]()
Сообщение
#10
|
Гость ![]() |
Дело в том что я хочу считать данные с порта лтп1. Взамен я получаю error121: invalid qualifier и курсор в начале индеса массива port.
Как объявить массив port, если я использую только один элемент. Код var a:real; begin a:=port[$378]; writeln(a); end. |
TarasBer |
![]()
Сообщение
#11
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если у тебя турбопас, то проблем быть не должно.
Если у тебя ФПЦ, выставь режим турбопаса. Если у тебя что-то другое, то никак ничего не сделать. -------------------- |
Гость |
![]()
Сообщение
#12
|
Гость ![]() |
А массив port объявлять в var нужно?
|
TarasBer |
![]()
Сообщение
#13
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык. В ТурбоПасе его объявлять не надо, он вшит в язык. В ТурбоПасе его объявлять не надо, он вшит в язык. В ТурбоПасе его объявлять не надо, он вшит в язык. В ТурбоПасе его объявлять не надо, он вшит в язык. В ТурбоПасе его объявлять не надо, он вшит в язык. -------------------- |
Гость |
![]()
Сообщение
#14
|
Гость ![]() |
А я в турбопасе и работаю, а ошибка все равно есть.
|
TarasBer |
![]()
Сообщение
#15
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
-------------------- |
Krjuger |
![]()
Сообщение
#16
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
У меня на 64 рязрядной семерке под Dosbox тоже компилируется.
|
IUnknown |
![]()
Сообщение
#17
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: ![]() ![]() ![]() |
Цитата Если у тебя ФПЦ, выставь режим турбопаса. Это не разрешит работу с Port-ами. Параграф 7.2.1 файла user.pdf (из документации) говорит об этом открытым текстом. |
![]() ![]() |
![]() |
Текстовая версия | 10.04.2025 10:23 |