постоение графика 1/x

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

постоение графика 1/x

Сообщение itwork » 28.12.2006 14:38:08

люди помогите построить график 1/x !
т.e. как его построить чтоб он выглядел по человечески ?
itwork
новенький
 
Сообщения: 41
Зарегистрирован: 28.12.2006 14:32:28

Сообщение first-leon » 28.12.2006 16:35:01

Что значит по человечески?
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение itwork » 28.12.2006 16:48:50

... ну чтоб было понятно что ето график( 1/x )
itwork
новенький
 
Сообщения: 41
Зарегистрирован: 28.12.2006 14:32:28

Сообщение first-leon » 28.12.2006 16:56:10

Это довольно простой график. В первую очередь нужно учесть что функция в точке 0 не определена(или не существует, матан уж точно и не помню).
Значит тебе нужно построить график во всех точках кроме 0.
Можно сделать так:
Код: Выделить всё
...
for x:=-100 to 100 do
begin
  if x<>0 then
  begin
    y:=1/x;
    line(x_old, y_old,x,y);
    x_old:=x;
    y_old:=y;
  end;
end;
...


x_old и y_old - координаты прошлой вычесленной точки графика. x, y - точки графика координаты которой мы только что вычислили. Чертим отрезок с концами в наших двух точках.
Вроде все.
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение itwork » 28.12.2006 17:01:45

так выдаст же ошыбку типо Y должно быть целым!
itwork
новенький
 
Сообщения: 41
Зарегистрирован: 28.12.2006 14:32:28

Сообщение first-leon » 28.12.2006 17:10:35

Ты прав писать надо так
Код: Выделить всё
line(round(x_old), round(y_old), round(x), round(y));

И еще - в цикле с шагом в 1 ниче хорошего не нарисуешь.
Так наверное лучше будет:
Код: Выделить всё
var
  x,y,x_old,y_old:double;
...
x:=-10
y:=1/x;
repeat
  if x<>0 then
  begin
    y:=1/x;
    line(round(x_old*10+100), round(100-y_old*10), round(x*10), round(y*10));
    x_old:=x;
    y_old:=y;
  end;
  x:=x+0.1
until x<10;
...
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение itwork » 28.12.2006 17:21:24

хмм чертит просто маленкую линию в верхнем правом углу!
itwork
новенький
 
Сообщения: 41
Зарегистрирован: 28.12.2006 14:32:28

Сообщение first-leon » 28.12.2006 17:54:50

Вот на TP, точно работает:
Код: Выделить всё
program Project1;
uses
  graph, crt;
var
  x,y,x_old,y_old:real;
  gd, gm:integer;
begin
gd:=9;
gm:=2;
initgraph(gd, gm, 'egavga.bgi');
x:=-10;
x_old:=x;
y_old:=1/x_old;
repeat
  if x<>0 then
  begin
    y:=1/x;
    line(round(x_old*20+300), round(200-y_old*20), round(x*20+300), round(200-y*20));
    x_old:=x;
    y_old:=y;
  end;
  x:=x+0.01
until x>-0.1;
x:=0.1;
x_old:=x;
y_old:=1/x_old;
repeat
  if x<>0 then
  begin
    y:=1/x;
    line(round(x_old*20+300), round(200-y_old*20), round(x*20+300), round(200-y*20));
    x_old:=x;
    y_old:=y;
  end;
  x:=x+0.01
until x>10;
readln;
end.
first-leon
новенький
 
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31

Сообщение itwork » 28.12.2006 18:11:41

аха! работает!
Ну, Большое Спасибо!
itwork
новенький
 
Сообщения: 41
Зарегистрирован: 28.12.2006 14:32:28


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru