IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> График функции, мышь, печать
Кина
сообщение 10.01.2005 15:12
Сообщение #1


Гость






Очень прошу помочь :o
Программа выводит сетку координат и метрическую сетку (разными цветами). Оси должны быть с графическими отметками и названиями. Рисует график y=x*x*x*Ln|x*x-4|. Если нажать мышкой на линию графика - отображаются координаты этой точки. Допускается использовать только вывод точки и получение координат. Возможность распечатки на матричном принтере.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Кина
сообщение 13.01.2005 10:48
Сообщение #2


Гость






Спасибо
Можно пару вопросов?
1. Я никак не могу понять как пересчитывать координаты из нормальных в графические (кстати, надо будет и обратно пересчитывать, координаты, полученные мышкой - хотя совершенно не представляю, как их передать в программу).
2. Функция getnum не компилируется, а остальные, связанные с мышью не работают sad.gif Вообщем, я явно чего-то не понимаю...
Программа пока выглядит так:
Код

{$N+}
{$E+}
{$X+}
uses graph,crt;
const
x0=500; {начало координат}
y0=400;
mtrx=10;
mtry=10;
shag=0.0001;
var
gm,gd:integer;
x1,y1,i, j:integer;
xmin, xmax, ax :real;
x,y:real;
sx, sy: integer;
 Coord: String;



Procedure ShowMouse; assembler; {показать мышь}
Asm
Mov AX,$01
Int $33
end;

{procedure get_mouse_status(var button: Byte: var x, y: Word);
begin
regs.AX:=$03;
intr($33, regs);
with regs do
button:=BL;
x:=CX;
y:=DX;
end;
end;


{Function getnum(num, {var x,y: real):word; {получить координаты при нажатии кнопки мыши}
{var
kn:word;
begin
asm
mov ax,$05
mov bx,num
int $33
mov x,cx
mov y,dx
mov kn,bx
end;
leftnum:=kn
end;  }


Function InitMouse:boolean; {Инициализация мыши}
var
ResultRegAX:word;
begin
asm
mov ax,$00
int $33
mov ResultRegAX,ax
end;
If ResultRegAX=$FFFF then InitMouse:=true else InitMouse:=false
End;

{function gx(x:real; sx:Integer):integer;
begin
gx:=trunc(sx*x)+Getmaxx div 2;
end;

function gy(y:real; sy:Integer):integer;
begin
gy:=trunc(sy*y)+Getmaxy div 2;
end; }



begin


writeln ('Vvedite predely izmeneniya X.');
write ('ot: ');
readln (xmin);
write ('do: ');
readln (xmax);
 gd:=InstallUserDriver('vesa256',nil);
 gm:=3;
 initgraph (gd,gm,'');

{------------------}
setcolor(8);
{Оси}
for i:=0 to 768 do putpixel(x0,i,8);
for i:=0 to 1024 do putpixel(i,y0,8);

OutTextXY(497,0,'^'); OutTextXY(999,397,'>'); {стрелки осей OX, OY}
SetColor(LightGreen);
OutTextXY(480,0,'y'); OutTextXY(999,410,'x');
OutTextXY(505,405,'0');
SetColor(Green); {установка зеленого цвета}
For i:=1 to 20 do {нанесение делений и числовых отметок на ось OY}

begin Str(20*(21-i), Coord); j:=i*20+10;
OutTextXY(2, j-5, Coord);
Line(28, j, 30, j)
end;
For i:=1 to 29 do {нанесение делений и числовых отметок на ось OX}
begin Str(20*i,Coord); j:=i*20+30;
If Odd(i) then OutTextXY(j-8, 436,Coord); Line(j,430, j,432)
end;
SetViewPort(31,4,630,429,FALSE); {установка текущего графического окна}

{sx:=getmaxx div 3 - 10;
sy:=getmaxy div 3 - 10; }
x:=xmin;
repeat
begin
y:=x*x*x*ln(abs(x*x-4));
{putpixel (x0+trunc(x*mtrX),y0-trunc(y*mtrY),yellow);}
{putpixel (gx(x, sx), gy(y,sy), yellow);}
 x:=x+shag;
end;
until x<=xmax;

if initMouse then
Begin
ShowMouse;
{getnum (0,x,y);   }

end;
readkey;
closegraph;
end.




Метрическую сетку и обозначения в нужном месте будут, когда я хоть увижу, как этот график выглядит...
Да, график пытается отображаться почему-то только когда максимум меньше минимума...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"