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

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


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


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

Выпуск № 050
от 22.10.2002, 17:00

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


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

Ayl
Статус: Профессиональный
Общий рейтинг: 118.04
[Подробней >>]
Ace
Статус: Начальный
Общий рейтинг: 120
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 124.77
URL: Страничка рассылки по Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]


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

Вопрос № 84. Сорри за повтор, но в пред. вопросе вкралась ошибка! Добрый день, эксперты. Подскажите в след. задач... (ответов: 1)
Вопрос № 85. Добрый(читай _снежный_:) октябрь ! Вот готовлюсь к олимпиаде... Представьте себе, заметил, что не зн... (ответов: 1)
Вопрос № 86. Добрый(читай _снежный_:) октябрь ! Вот готовлюсь к олимпиаде... Представьте себе, заметил, что не зн... (ответов: 2)
Вопрос № 87. Здравствуйте. Помогите написать программу: пускай в файле в первом рядке находяться через пробел m и... (ответов: 1)

Вопросов: 4, ответов: 5


 Вопрос № 84

Сорри за повтор, но в пред. вопросе вкралась ошибка!
Добрый день, эксперты.
Подскажите в след. задаче
Необходимо на Pascal в граф-ом режиме закрасить поле, где определена система:
|y>= sqrt(1-sqr(x))
|y+abs(x)<=4
Во- первых, какие циклы использовать только по X (for x:=0 to GetmaxX) или по x по y вместе.
И я так понял, потом мы ставим проверку на (1- sqr(x) )>0, а дальше???
Вообщем, растолкуйте с алгоритмом.



Вопрос отправлен: 18.10.2002, 17:31
Отправитель: vofka

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

Отвечает Ayl

Доброе время суток, vofka!
Еще в дополнение к ответу:
Может, имеет смысл основной цикл делать по экранной координате X. Потом ее переводить в условные координаты (от -1 до 1), вычислять отрезок по Y и выводить...
Формулы для пересчета:
Пусть Xmin и Xmax - экранные координаты графика.
X - текущее значение экранной координаты.
Тогда:
Xw = (X - Xmin) / 100 (100 - это масштаб)
Ywmin, Ywmax - по формулам
Ygmin = (4 - Ywmax) * 100 + Ymin
Ygmax = (4 - Ywmin) * 100 + Ymin
(4 - это максимальное значение координаты Y для твоих условий)
Все. Рисуешь линию:
(X, Ygmin) - (X, Ygmax).

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


 Вопрос № 85

Добрый(читай _снежный_:) октябрь !
Вот готовлюсь к олимпиаде...
Представьте себе, заметил, что не знаю пару элементарных штук :) :::
1) Как я могу из STRING выделить BYTE или CHAR ?
2) Под WinNT/2k/XP как-то там ограничены Дос-программы в праве пользования памятью. Если можно обьясните по конкретнее.
Мои моразмы на эту тему: В смысле я могу пользоваться кучей как всегда, а как только делаю попытку даже почитать "чужие" сегменты, NT протрамму "казнит".
Так что там на самом деле ?
3) Какая рекурсия быстрей(лучше) ? :
а) процедурная (процедура вызывает сама себя)
б) эмулированная (вместо стека создаю большой массив(сегменте данных или куче) и пользуюсь LABELами)
(хотя я сам буду тестировать с таймером на время, но интересно ваше мнение.)



Вопрос отправлен: 18.10.2002, 17:43
Отправитель: KODer (koder@xakep.ru)

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

Отвечает Ace

Добрый день, KODer!
1. Т.к. String - это массив из Char, то для выделения Char'а из строки S c номером n нужно написать s[n].
var s : string;
ch : char;
...
ch:=s[7];
Для Byte выделенный char необходимо преобразовать с помощью функции Ord (Ord(ch)).
2. Под этими ОС работать с памятью довольно сложно, т.к. Windows следит за тем, чтобы ты не залез в какую-нибудь важную для нее область памяти. Это сделано для более высокой надежности (хотя чистого Дос'а в этих ОС уже нет, а осталась лишь эмуляция).

Ответ отправлен: 19.10.2002, 18:16
Отправитель: Ace


 Вопрос № 86

Добрый(читай _снежный_:) октябрь !
Вот готовлюсь к олимпиаде...
Представьте себе, заметил, что не знаю пару элементарных штук :) :::
1) Как я могу из STRING выделить BYTE или CHAR ?
2) Под WinNT/2k/XP как-то там ограничены Дос-программы в праве пользования памятью. Если можно обьясните по конкретнее.
Мои моразмы на эту тему: В смысле я могу пользоваться кучей как всегда, а как только делаю попытку даже почитать "чужие" сегменты, NT протрамму "казнит".
Так что там на самом деле ?
3) Какая рекурсия быстрей(лучше) ? :
а) процедурная (процедура вызывает сама себя)
б) эмулированная (вместо стека создаю большой массив(сегменте данных или куче) и пользуюсь LABELами)
(хотя я сам буду тестировать с таймером на время, но интересно ваше мнение.)
p.s. Извеняюсь, если я два раза послал вопрос --- глючил бровзер...



Вопрос отправлен: 18.10.2002, 17:48
Отправитель: KODer (koder@xakep.ru)

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

Отвечает Sensey

Здравствуйте, KODer!
1)
var
s:string;
...
s='0123';{строка}
s[0]-тип char, значение символ с кодом 4 - то есть в 0-м символе хранится длина
length(s)==byte(s[0])
s[1]=='0';
byte(s[1])==$30==48
То есть строка - массив char-ов. Преобразование в байт стандартным методом переопределения типа.
2) У тебя обычная ДОС задача с 1 Мб памяти. Ограничения только по праямому обращению к памяти, портам, прерываниям... (ИМХО)
3) б) так как вызов ф-ции (call) дольше чем переход (jmp) сам по себе, а еще создание кадра(то есть сохранение в стеке исп. регистров, настройка локальных переменных...)
PS Бывает... :(


Ответ отправлен: 19.10.2002, 11:56
Отправитель: Sensey


Отвечает Ayl

Приветствую Вас, KODer!
Пусть у тебя строка описана так:
s : string;
Тогда сама строка представляет массив из 256 элементов, 0-й элемент содержит длину строки. Обращаться к символам строки можно с помощью выражения s [i] - взять i-й символ строки (нумерация с 1-цы). Обращаться как к байтам - надо ставить преобразование типа:
Byte (s [i])
Выражение Byte (s [i]) позволяет узнать длину строки.
Того же можно добиться с помощью следующего описания:
l : Byte absolute s;
тогда в l будет длина строки.

Ответ отправлен: 18.10.2002, 18:36
Отправитель: Ayl


 Вопрос № 87

Здравствуйте. Помогите написать программу:
пускай в файле в первом рядке находяться через пробел m и n-
кол-во рядков и столбиков, дальше m рядков каждый из них складываеться из n символов 0 и 1, пускай это карта лабиринта 1-это стены а 0-свободные клетки, тогда нужно чтобы так называеиый робот с начальными кордианатами x,y которые находяться в конце файла через пробел, вышел из етого лабиринта зделав наименьшее кол-во поворотов, он умеет ходить в соседнююю клетку(влево,вправо,вниз,вверх,но не по диагоналям )
результат:пускай направление вверх кодируеться буквой N, вниз-S влево-W, вправо-E тогда должно выводиться на екран его путь к выходу
например:
входные данные: выходные данные
5 6 2N4W
110111
000001
101101
100001
111111
5 4



Вопрос отправлен: 18.10.2002, 23:44
Отправитель: max

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

Отвечает Ayl

Доброе время суток, max!
Ну, задача, в принципе, простая. Единственная сложность - это описать сам лабиринт. Вследствии того, что в Паскале нет динамических массивов, то предлагаю ввести ограничение на размер массива, скажем, 50*50 и описывать через двумерный массив.
Поиск маршрута - проще всего, наверное, такой алгоритм.
Ищем все пути, а потом выбираем с наименьщим количеством поворотов.
В общем, вот прога - смотри, разбирайся!

Приложение:

Ответ отправлен: 21.10.2002, 12:09
Отправитель: Ayl



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (42)
C / C++ (26)
Perl (4)
Delphi (18)
Pascal (25)
Basic / VBA (9)
Java / JavaScript (10)
PHP (7)
MySQL / MSSQL (11)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (22)
"Железо" (31)
Поиск информации (13)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (12)
Юристу
Гражданское право (8)
Семейное право (6)
Трудовое право (5)
КоАП (7)

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




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

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

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

В избранное