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

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

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

 
Closed Topic Открыть новую тему 
> Построение любого графика, может это кому надо ...
Altair
сообщение 8.10.2004 20:22
Сообщение #1


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Мне нужно было иногда рисовать графики (для матана). Я довольно ленивый, а потому написал прогу для их постоения. Онадалекаот совершенства, но может кому надо...
изменяя выражение {***} и опции можно строить любые графики.
Код
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
     grMode : Integer;

   x,y:real;{extended;}
       i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);

x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>2 then begin y:=abs(x/(x-2))-1; {***}
{ writeln(y:1:8);}
 putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
 x:=x+shag;
end;
readkey;
closegraph;
end.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Таги
сообщение 29.12.2005 20:21
Сообщение #2





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Таги

Репутация: -  0  +


Здорова...куда тут нужно свою функцию ставить скажи плиз...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 29.12.2005 20:30
Сообщение #3


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


место, куда подставляется фунция выделено так:
Код
{****}замени эту функцию на свою{****}


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Таги
сообщение 29.12.2005 20:42
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Таги

Репутация: -  0  +


Почему када компилируешь ничего не происходит...тока экран моргает...и все...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 29.12.2005 20:57
Сообщение #5


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


код покажи..


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Таги
сообщение 29.12.2005 21:08
Сообщение #6





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Таги

Репутация: -  0  +


Код
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
grMode : Integer;

x,y:real;{extended;}
i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);

x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>2 then begin y:=3/x; {***}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.


Сообщение отредактировано: GoodWind - 29.12.2005 21:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.12.2005 21:23
Сообщение #7


Гость






Таги, у тебя при X = 0 происходит Division By Zero... Неужели это не видно по функции? Надо было делать так:
{***} if x<>0 then begin y:=3/x; {***}
 К началу страницы 
+ Ответить 
Таги
сообщение 29.12.2005 21:26
Сообщение #8





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Таги

Репутация: -  0  +


ok...спасибо..работает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
madpanda
сообщение 14.04.2006 1:54
Сообщение #9





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Карен

Репутация: -  0  +


Вот воспользовался этой программой для построения графика функции.

Uses Graph,crt;
const

{ OPTIONS }
shag=0.0001;
lgr = -25;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-100;
OXYmaxX=100;
OXYminY=-100;
oxymaxY=100;

Var grDriver : Integer;
grMode : Integer;

x,y:real;{extended;}
i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);

x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>2 then begin y:=(exp(ln(2)*x))-5*cos(x)-3; {***}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.

Выдает ошибку "207 - Invalid Floating poin operation "
При простмотре сначала рисуется график, а потом он резко уходит вверх и появляется линия после нее рисуется какие-то точки...

Помогите разобраться!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.04.2006 6:52
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ументш диапазон например
-10 ... 10


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 14.04.2006 7:46
Сообщение #11


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


На Free Pascal у меня отработало без ошибок.
Прикрепленное изображение
Только область конечно надо ограничить справа.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 11.10.2006 14:14
Сообщение #12


Гость






было бы здорово, если бы автор добавил описания к константам :-)

з.ы. Altair, Спасибо :-)
 К началу страницы 
+ Ответить 
volvo
сообщение 11.10.2006 14:27
Сообщение #13


Гость






const
{ OPTIONS }
shag = 0.0001; { <-- Шаг изменения X }
lgr = -50; { <-- Начальное значение X}
pgr = 50; { <-- Конечное значение X }
zcrtX = 320; { <-- Координата X центра экрана }
zcrty = 240; { <-- Координата Y центра экрана }
mtrX = 10; { <-- Коэффициент масштабирования по оси X }
mtrY = 10; { <-- Коэффициент масштабирования по оси Y }
colorG = 15; { <-- Цвет графика }
colorOXY = 4; { <-- Цвет координатных осей }
OXYminX = -200; { <-- Минимальное отображаемое значение оси X }
OXYmaxX = 200; { <-- Максимальное отображаемое значение оси X }
OXYminY = -200; { <-- Минимальное отображаемое значение оси Y }
oxymaxY = 200; { <-- Максимальное отображаемое значение оси Y }

Все вроде прозрачно... unsure.gif
 К началу страницы 
+ Ответить 
NadBlack
сообщение 14.10.2006 22:02
Сообщение #14


Гость






У меня почему то не получилось построить график
запускаю всё это дло а оно выдаёт мне с верху вниз пол экрана серым,вторая половина чёрным и красненькая полоска посередине всё...

Код
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
     grMode : Integer;

   x,y:real;{extended;}
       i:integer;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);

x:=lgr;
while x<=pgr do
begin
{ readln(x);}
{***} if x<>1 then begin y:=abs(x-1); {***}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.


Сообщение отредактировано: volvo - 14.10.2006 22:46
 К началу страницы 
+ Ответить 
Bokul
сообщение 14.10.2006 22:38
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Странно, у меня все хорошо отрисовало в FreePascal:


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.10.2006 22:45
Сообщение #16


Гость






NadBlack, в Турбо Паскале тоже прекрасно отрисовывается...
 К началу страницы 
+ Ответить 
Гость
сообщение 14.10.2006 23:27
Сообщение #17


Гость






Хм,у меня возможно из-за неполной версии паскаля такой глюк
А как мне нужно изменить эту строчку
{***} if x<>1 then begin y:=abs(x-1); {***}
если у меня формула y:=abs(x)-1
 К началу страницы 
+ Ответить 
Bokul
сообщение 15.10.2006 1:10
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
А как мне нужно изменить эту строчку
{***} if x<>1 then begin y:=abs(x-1); {***}
если у меня формула y:=abs(x)-1


Гость, ты что смеешься? blink.gif Вот так:
 if true then begin y:=abs(x)-1;
.

Сообщение отредактировано: volvo - 2.11.2006 15:05


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reflex
сообщение 15.10.2006 21:05
Сообщение #19


Пионер
**

Группа: Пользователи
Сообщений: 118
Пол: Женский

Репутация: -  0  +


как построить график функции X^X


--------------------
Нам не дано предугадать как наше слово отзовется...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atos
сообщение 16.10.2006 13:16
Сообщение #20


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


http://forum.pascalnet.ru/index.php?showt...&st=0&p=38226&# возведение в степень
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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