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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 167
от 04.05.2006, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 179, Экспертов: 45
В номере:Вопросов: 2, Ответов: 2


Вопрос № 41576: Здравствуйте, уважаемые эксперты!!! цкажите мне как можно в pascal-е (в графике) с помошью стрелок двигнуть тело(например квадтрат) вверx,вниз,влево и вправо ? Спасибо заране !!!...
Вопрос № 41583: Здравствуйте уважаемые эксперты. Прошу помочь в решении следующей проблеммы: Из прибора, соединенного с ЭВМ получены 4 байта, которые необходимо преобразовать в число формата floating-point. Мои попытки к должному результату не привели. В...

Вопрос № 41.576
Здравствуйте, уважаемые эксперты!!!
цкажите мне как можно в pascal-е (в графике) с помошью стрелок двигнуть тело(например квадтрат) вверx,вниз,влево и вправо ?
Спасибо заране !!!
Отправлен: 28.04.2006, 19:17
Вопрос задал: Grigoryan Harut /Harutik (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Решетник Д
Здравствуйте, Grigoryan Harut /Harutik!
Вот код (нужен драйвер видео Egavga.bgi - в поставке должен быть)
uses Graph, crt;

const
width = 100;
height = 100;
x0 = 100;
y0 = 100;
var
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
x, y: integer;
c: char;
f: boolean;

procedure erasesqr;
begin
setfillstyle(1, 0{black});
bar(x, y, x + width, y + height);
end;

procedure movesqr(dx, dy: integer);
begin
erasesqr;
x := x + dx;
y := y + dy;
setfillstyle(1, 7);
bar(x, y, x + width, y + height);
end;

begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode = grOk then
begin { Do graphics }
x := x0;
y := y0;
movesqr(0, 0);
c := #0;
f := true;
while f do
if keypressed then
begin
c := readkey;
case c of
#75: movesqr(-5, 0);
#80: movesqr(0, 5);
#77: movesqr(5, 0);
#72: movesqr(0, -5);
#27: f := false;
end;
end;
CloseGraph;
end
else
Writeln('Graphics error:', GraphErrorMsg(ErrCode));
end.
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 4-ый класс)
Ответ отправлен: 28.04.2006, 20:41
Оценка за ответ: 5


Вопрос № 41.583
Здравствуйте уважаемые эксперты. Прошу помочь в решении следующей проблеммы:
Из прибора, соединенного с ЭВМ получены 4 байта, которые необходимо преобразовать
в число формата floating-point. Мои попытки к должному результату не привели.
Верное значение высвечивалось на экране прибора. Ниже привожу несколько примеров.
Индикация пррибора полученные данные в десятичном виде(1..4 байт)
-100,5 194 200 254 88
- 77,99 194 155 252 133
- 44,04 194 48 37 212
- 24,84 193 198 192 244
- 0,03 188 223 103 4
- 0,0 187 160 44 225
0,02 60 196 1 6
28,2 65 225 148 255
54,01 66 88 5 216
80,01 66 160 6 5
140,01 67 12 2 251
140,01 67 12 3 62
193,69 67 65 177 218
193,69 67 65 177 83
220,87 67 92 222 223
424,99 67 212 127 79
некоторые значения приведены дважды, для демонстрации факта изменения данных
при неизменности значения на индикаторе прибора.
Очень нужна формула преобразования.
Отправлен: 28.04.2006, 21:23
Вопрос задал: Michaelmmmsnz (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Хузин Макс
Здравствуйте, Michaelmmmsnz!

Данные представлены в формате "короткое вещественное"

31 бит-> 0 бит = 194 200 254 88

бит (31) - знак мантисы
биты (30 - 23) - 8-и битная - экспанента +127
биты (23 - 0) - 23-х битная мантиса

194 = 11000010bin
200 = 11001000bin
254 = 11111110bin
88 = 01011000bin
итого: 1 10000101 10010001111111001011000
31 бит = 1, т.е. знак минус
экспанента = (10000101) 133 - 127 = 6
мантиса = 1 10010001111111001011000 (первая цифра мантисы всегда 1 поэтому ее не пишут, что позволяет увеличить разрядность)
т.к. экспанента = 6, то первые 6+1 цифр целое число, остальное дробная часть
т.е. -> 1100100 = 100 - целое, а 01111111001011000 - дробная часть.
Дробная часть образуется следующим образом
2^-1, 2^-2, 2^-3 и т.д.
01111111001011000 = 2^-2+2^-3+2^-4+2^-5+2^-6+2^-7+2^-8+2^-11+2^-13+2^-15? что приблизительно равно 0,5.
В итоге имеем - 100,5

З.Ы. Подробнее о представлении чисел можешь прочитать в книгах по асму.
Ответ отправил: Хузин Макс (статус: 2-ой класс)
Ответ отправлен: 29.04.2006, 08:18
Оценка за ответ: 5


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное