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