IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Проблемы с массивом, Как задать большой диапазон у массива.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Доброго времени суток!

Решаю задачу, в которой нужен массив с таким диапазоном [1..1015]
Пишу так:
mass = array[int64] of int64;


Пишет, что слишком большой диапазон. Как с этим справится?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Как с этим справится?
Пересмотреть алгоритм решения. Максимальный размер массива для 16-битных компиляторов = 64К, а в более современных (например, в FPC) существует ограничение на количество элементов в массиве (их не может быть больше, чем high(PTRINT), то есть 2147483647) независимо от размера каждого элемента.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Спасибо. smile.gif
Уже начинаю понимать в чём подвох в задаче (в принципе в этом тоже подвох)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


IUnknown полностью с вами согласен!.
можно попытаться сделать задачу с помощью динамической памяти. Но наверное в задаче есть разумное решение.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
можно попытаться сделать задачу с помощью динамической памяти
Сколько надо динамической памяти для выделения места под 1015 элементов типа Int64, представляем себе? 8 * 1015 байт = 8 петабайт (8 миллионов Гб) smile.gif Я что-то сомневаюсь, чтоб столько памяти было доступно...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Да и вообще весьма сомнительна возможность работы с таким массивом.Даже если его побитово заполнять все равно 125 терабайт это перебор.С другой стороны если разбивать на части и отдельно делать какие нибудь манипуляции,то на это уйдут далеко не минуты.Странные какие то запросы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Скажите пожалуйста, нужно ли объявлять массив port.
Что неправильно в программе? И как работать с портом лтп1, не могу найтти полного описания.
Код

var a:real;
   a:=port[378];
writeln(a);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Неправильно то,что массив в паскале обьявляется совсем по другому.
a = array[1..378] of real;
Еще неправильно то,что нету bеgin...

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


А он не пытается объявить a как массив.
Он пытается работать с "массивом" Port.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В 32-битных версиях он работать, очевидно, не может.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Дело в том что я хочу считать данные с порта лтп1. Взамен я получаю error121: invalid qualifier и курсор в начале индеса массива port.
Как объявить массив port, если я использую только один элемент.
Код
var a:real;
begin
   a:=port[$378];
writeln(a);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Если у тебя турбопас, то проблем быть не должно.
Если у тебя ФПЦ, выставь режим турбопаса.
Если у тебя что-то другое, то никак ничего не сделать.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






А массив port объявлять в var нужно?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.
В ТурбоПасе его объявлять не надо, он вшит в язык.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






А я в турбопасе и работаю, а ошибка все равно есть.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


А у меня в турбопасе это нормально компилируется.
Картинку с окном "о программе", пожалуйста.
Прикрепленное изображение


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


У меня на 64 рязрядной семерке под Dosbox тоже компилируется.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Если у тебя ФПЦ, выставь режим турбопаса.
Это не разрешит работу с Port-ами. Параграф 7.2.1 файла user.pdf (из документации) говорит об этом открытым текстом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 20:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name