Здраствуйте! У меня вот такой вопрос: в bP 7.0 под защищенным режимом можно максимум откусить 16 мб памяти. Есть ли какие-нибудь методы использовать оставшуюся память?
Здравствуйте, alexandr! Компилер BP 7.0 заточен под защищённый режим для .286, отсюда и такое ограничение. Там, в отличие от реального режима, совсем по-другому организована адресация, и в дескриптор сегмента больше 16 Мб не забьёшь - защ. режим там тоже 16-разрядный. Выход - писать ассемблерную вставку, переводящую в защищённый 32разрядный режим, причём не на встроенном Ассемблере (он тоже под .286), а отдельно, в TASMе, например, и прилинковывать. Удачи!
Ответ отправлен: 15.05.2002, 22:04 Отправитель: Топор Отвечает Артём Шегеда
Здравствуйте, alexandr! BP 7.0 использует сервис DPMI и никаким программам пользователя зарезервированной памяти не отдаст: ты ведь именно это хотел сделать - выделить для своих целей "немножко" от общего куска? Если тебе нужна память XMS - пиши свои функции для доступа к сервису XMS (или EMS). Это не сложно. Можешь поискать библиотеки, но я этого не делал - писал сам. Ответ отправлен: 13.05.2002, 12:36 Отправитель: Артём Шегеда
Вопрос № 16
Зравствуйте все! Послезавтра экзамен, помогите пожалуйста!!! Надо написать программу: "Переставить строки матрицы таким образом, чтобы суммы положительных элементов строки возрастали" Целую, Ириша...
Приветствую Вас, Ирина! Секунд тридцать въезжал в формулировку, но потом понял, насколько тривиальна задача. Напоминаю, что здесь программы не пишут, а объясняют вопрошающим, как кратчайшим путём добится результата. Матрица задаётся своим размером (MxN) и своим содержимым (вводится с клавиатуры). 1. Как найти сумму положительных элементов строки? Считаем, что текущая строка имеет номер i. Просто необходимо создать цикл, в котором параметром служит номер элемента (как правило j:integer). Номер элемента изменяется от 1 до N (N - количество элементов в строке). В теле цикла нужно проверять, больше ли нуля текущий элемент (A[i,j]). Если условие истинно, то прибавить к сумме (sum:integer) текущий элемент (до начала цикла сумма должна быть обнулена). После завершения цикла переменная sum хранит искомое значение. 2. Как найти суммы положительных
элементов строк матрицы? Всё так же просто. Оформи действия в пункте 1 в виде функции, принимающей в качестве параметра i-номер строки и возвращающей сумму положительных элементов. Организуй цикл, в котором параметром служит номер строки (как правило i:integer). Номер элемента изменяется от 1 до M (M - количество строк). В теле цикла нужно вызывать функцию, а результат заносить в таблицу (тот же массив S: array [1..M] of integer). 3. Как отсортировать строки по возрастанию сумм? Сортировку методом пустого стакана помнишь? Только не говори, что вас этому не учили - по глазам вижу, что врёшь ;). Только, кроме внесения значения в пустую ячейку, переставь строки исходной матрицы. Будут вопросы - пиши. Научу почти всему, что знаю... Ответ отправлен: 14.05.2002, 12:44 Отправитель: Артём Шегеда
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.