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

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

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

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


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





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

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


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


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

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

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


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


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





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

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


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


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

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

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


код покажи..


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






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





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

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


ok...спасибо..работает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


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


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


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

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

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


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


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


Гость






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

з.ы. Altair, Спасибо :-)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гуру
*****

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

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


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


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

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


Гость






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


Гость






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


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


Пионер
**

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

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


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


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


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

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

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


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

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

 





- Текстовая версия 21.12.2024 23:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name