Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 098
от 28.02.2003, 18:40

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 160
Отправлено ответов: 489
Активность: 305.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Byter
Статус: Опытный
Общий рейтинг: 125.62
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.55
[Подробней >>]
Tancho
Статус: Доверительный
Общий рейтинг: 145.74
[Подробней >>]
 
Ace
Статус: Доверительный
Общий рейтинг: 137.83
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 120.92
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 д.
[Подробней >>]
Zloy
Статус: Опытный
Общий рейтинг: 107.9
URL: Pascal - Web - Site
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 113.84
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 159. Эксперты у меня обращаюсь к вам со следующим вопросом. Существует массив Z=4*4: -4.1 3.14 5.21 -... (ответов: 4)
Вопрос № 160. Каким образом можно использовать ф-цию EXEC в TurboPascal, чтобы можно было работать (в этой же прог... (ответов: 6)

Вопросов: 2, ответов: 10


 Вопрос № 159

Эксперты у меня обращаюсь к вам со следующим вопросом.

Существует массив Z=4*4:
-4.1 3.14 5.21 -1
1.1 2.5 1.15 1.3
4.5 5.4 -3.7 2.1
1.8 0.5 -0.5 -6
Необходимо сформировать массив T из сумм елементов, распоженных в строках с отрицательными элементами на главной диагонали исходного массива



Вопрос отправлен: 25.02.2003, 15:52
Отправитель: bogdan

[Следующий вопрос >>] [Список вопросов]

Отвечает Byter

Дмюоьх делщ, bogdan!
Пеюе бпм укеллм лчдм?
Бпмюь номжя цч пеюз лчнуъчйу?
Уйу нмкмжйу?
ЦЪ
Цч пеюз нуъчпщ луипм ле юядеп :)

Ответ отправлен: 25.02.2003, 18:24
Отправитель: Byter


Отвечает Ayl

Доброе время суток, bogdan!
Ну и где тут вопрос?
Непонятно, что такое главная диагональ квадратной матрицы? Это элементы с совпадающими индексами. В твоем случае:
Z(1,1), Z(2,2), Z(3,3), Z(4,4).
Далее нужно выбрать среди них отрицательные и вычислить суммы в соответствующих строках. Например, т.к. Z(1,1)=-4.1, то T(1)=Z(1,1)+Z(1,2)+Z(1,3)+Z(1,4)=3.25


Ответ отправлен: 25.02.2003, 16:24
Отправитель: Ayl


Отвечает Tancho

Приветствую Вас, bogdan!
Смотри в Приложении! Там я даю две примерные проги,
надеюсь они удовлетворят тебе.


Приложение:

Ответ отправлен: 27.02.2003, 10:52
Отправитель: Tancho


Отвечает Ace

Добрый день, bogdan!
А где вопрос?

Ответ отправлен: 26.02.2003, 20:13
Отправитель: Ace


 Вопрос № 160

Каким образом можно использовать ф-цию EXEC в TurboPascal, чтобы можно было работать (в этой же программе) с графикой.
Проблема состоит в том, что при указании директивы
{$M $4000,5000,5000}
в процессе инициализации графики программа вываливается с ошибкой "не хватает памяти для загрузки графического драйвера"
А при {$M $4000,0,0} ф-ция EXEC не выполняется вовсе.
Что скажете ? Как выправлять?



Вопрос отправлен: 25.02.2003, 17:25
Отправитель: Tigran Kalaidjian (kalaidjian@pochtamt.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tancho

Приветствую Вас, Tigran Kalaidjian!
Давайте разобраться :
1) Директива компилера $M имеет следующая структура :
{$M StackSize,HeapMin,HeapMax}, где Heap ето область
памяти выделимая для динамические переменливый прогу;
Неар имееть стековая организация;
HeapMin - нижная грань Heap, HeapMax - верхная грань Heap;
StackSize - рамер памяти выделяемый для области динамических переменливых;
1024 <= SteckSize <= 65520;
0 <= HeapMin <= 655360;
HeapMin <= HeapMax <= 655360;
Если свободная память меньше HeapMin ПРОГУ НЕ ВыПОЛНЯЕТЬСЯ!
Начальный адресь Heap находиться в переменная HeapOrg,
конечьный у HeapEnd, текущий у HeapPtr;
2)Проседура EXEC выпольняющая указаная прога имееть формат: EXEC(Path, CmdLine : String), где Path Полная Файловая Спесификация Прогу, CmdLine параметр командном
строку выпольняемой прогу;
EXEC не меняет расспределении памяти передь выполнении
прогу, поетому когда компилируем прогу пользуяшчая EXEC,
надо задать необходимый размер памяти Heap;
3) Освободить динамической памяти занимаемой променливый
можно через процедурый Dispose и FreeMem, или процедурый
Mark и Release, Mark запоминаеть текучая стойность HeapPtr, Если Mark(P) занимаеть место для динамической переменной P, то Release(P) освобождаеть его;
Так что мой совет такой пользуй ся сказаного выше и меняй
размер Heap, а если нужно ишчи и другой графический драйвер
занимаюшчий меньше памяти.


Ответ отправлен: 28.02.2003, 12:20
Отправитель: Tancho


Отвечает Byter

Дмюоме аоекз ъяпми, Tigran Kalaidjian!
А деоеипуае $M
1-оецкео ъпеич
2-лчбчйм иябу
3-имлеф иябу
Уъсмду уц епмжм.

Ответ отправлен: 25.02.2003, 18:21
Отправитель: Byter


Отвечает Sensey

Приветствую Вас, Tigran Kalaidjian!
Ну так это ... э-э-э... :)
Увеличь значения-то.
В чем трабла?


Ответ отправлен: 25.02.2003, 17:45
Отправитель: Sensey


Отвечает Ayl

Доброе время суток, Tigran Kalaidjian!
Попробуй указать {$M $4000,65536, 65536}
т.е. зарезервировать 64К памяти. По идее, должно хватить, если ты не используешь больших объемов данных и множества динамических переменных. При этом размер запускаемой программы не может быть больше, чем 640К-64К=576К минус размер памяти, занятой резидентами и ОС. Реально это даст порядка 400-450К для запускаемой программы.
Другой вариант - прикрепить графический драйвер к своему EXE-шнику и тогда этой ошибки появлятся не должно.
Если прога (которую собираешься запускать) больше 450К - попробуй поставить 32768, или 16384, или даже 8192 в качестве второго и третьего параметров директивы $M. Минимальное значение зависит от размера используемого графического драйвера, объема твоих данных и количества и размера динамических переменных.
Надеюсь, что в своей программе ты не используешь еще и оверлеев :-)

Ответ отправлен: 25.02.2003, 17:49
Отправитель: Ayl


Отвечает Zloy

Доброе время суток, Tigran Kalaidjian!
так увеличь объём памяти. ты хоть знаешь, что делает $M :)


Ответ отправлен: 26.02.2003, 08:24
Отправитель: Zloy


Отвечает baldr

Приветствую Вас, Tigran Kalaidjian!
У меня в 640x480x4bit работало такое: {$M 8192,100000,100000}.
Правда, не все проги запускались, а только те, которым хватало памяти. Проблема может
быть еще и в сильной фрагментированности памяти. Попробуй найти утилиту memmaker от Dos 6.22
и ею оптимизировать распределение памяти для DOS. Только сохрани на всякий случай autoexec.bat
и config.sys...


Ответ отправлен: 25.02.2003, 23:59
Отправитель: baldr



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (33)
C / C++ (26)
Perl (4)
Delphi (16)
Pascal (20)
Basic / VBA (10)
Java / JavaScript (7)
PHP (5)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (24)
"Железо" (27)
Поиск информации (14)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (10)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (4)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное