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

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

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

> построение графика функции
сообщение
Сообщение #1


Новичок
*

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

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


program Grafik_funkcii;
uses crt,graph;
var
{координаты графика функции}
x,y,a,b:real;
{Номера типа графического дрaйвера и номера графического режима}
driver,mode:integer;
{cx,cy - координаты центра системы координат на экране,
mx,my - масштаб (количество пикселей на единицу),
ex,ey - координаты точки графика в масштабе экрана}
cx,cy,mx,my,ex,ey,n:integer;
{Описание функции, график которой затем выводится на экран}
function f(x:real):real;
begin
f:=sin(3*x)+cos(x)/exp(x)
end;
procedure DeleniyaX(a:real);
var
stroka:string;x,s:real;
begin
{Деления выставляются в 10-ти точках от -a до a c шагом s}
x:=-a;s:=2*a/10;
repeat
ex:=trunc(cx+x*mx)-10;
ey:=cy+5;
str(x:3:1,stroka);
outtextxy(ex,ey,stroka);
x:=x+s;
until x>a;
end;
procedure DeleniyaY(b:real);
var
stroka:string;y:real;s:integer;
begin
{Деления по оси Y выставляются в 10 точках от -b до b}
s:=trunc((getmaxy-30)/10);ey:=getmaxy-30;
repeat
ex:=cx+5;
y:=b-ey/my;
str(y:3:1,stroka);
if abs(y)>0.5 then outtextxy(ex,ey+5,stroka);
ey:=ey-s;
until ey<10;
end;
{Подпрограмма построения графика}
procedure MyGrafik(a,b:real);
{Процедура строит график от -a до a c шагом s}
var p,n:integer;s,t:real;
strx:string;
begin
{Положение начала координат на экране}
cx:=trunc(getmaxx/2);cy:=trunc(getmaxy/2);
{Цвета фона и текста}
SetBkColor(yellow);SetColor(blue);
line(10,cy,getmaxx-50,cy);{Ось X}
{Стрелочка на оси X}
line(getmaxx-60,cy-5,getmaxx-50,cy);
line(getmaxx-60,cy+5,getmaxx-50,cy);
line(cx,10,cx,getmaxy-20); {Ось Y}
{Рисование стрелочки на оси y}
line(cx-5,20,cx,10);line(cx+5,20,cx,10);
setcolor(magenta);
{Подписи к осям}
outtextxy(cx+10,10,'y');
outtextxy(getmaxx-50,cy-10,'x');
{Определение масштаба по осям X и Y исходя из того,
что X от -a до a}
mx:=trunc((getmaxx)/(2*a));
{Y от -b до b}
my:=trunc((getmaxy)/(2*b));
{Вывод значений по оси X от -a до a}
DeleniyaX(a);
{Вывод значений по оси Y от -b до b}
DeleniyaY(b);
outtextxy(10,50,'График функции');
{x меняется от -a до a c шагом s в n+1 точке}
x:=-a;n:=500;s:=2*a/n;
moveto(trunc(cx+x*mx),trunc(cy-f(x)*my));
Repeat
y:=f(x);
ex:=trunc(cx+x*mx);
ey:=trunc(cy-y*my);
lineto(ex,ey);
x:=x+s;
Until ex>getmaxx-70;
end;
Begin
clrscr;
write('a=');readln(a);
write('b=');readln(b);
{Открытие графического режима}
driver:=detect;
initgraph(driver,mode,'d:\tp\bgi');
{очистка экрана в графическом режиме}
cleardevice;
{выполнение процедуры вывода графика}
MyGrafik(a,b);
{задержка}
repeat
{до нажатия клавиши Enter}
until keypressed;
End.

это программа построения графика функции по точкам
почему-то она не работает при данной функции f:=sin(3*x)+cos(x)/exp(x)
при значениях b больше 19
пишет ошибку invalid floating point operation
может кто подскажет

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

Сообщений в этой теме
yar11   построение графика функции   14.03.2006 14:09
volvo   :blink: Задал в программе a := 1; b := 25 все пре…   14.03.2006 14:18
yar11   спасибо за совет Возник вопрос: в каких все-таки …   15.03.2006 13:14
klem4   А какже x,y,a,b:real; ? :cool:   15.03.2006 13:17
yar11   можетя что-то не так понял видимо в моей проге {…   15.03.2006 13:29
klem4   {$N-} - Использование сопроцессора. (Глобальн…   15.03.2006 13:38
madpanda   Ребята у меня вот такая вот функция y=2^x-5*cos(x)…   14.04.2006 1:59
volvo   А заменить функцию на твою и попробовать МЫ должны…   14.04.2006 2:14
Сталкер   Можно ли создавать скрин графика с белым фоном. Ес…   19.04.2007 23:48
volvo   Можно ли создавать скрин графика с белым фоном.И э…   20.04.2007 0:12
Сталкер   Спасибо. :yes2: Теперь можно экономить чёрный кар…   20.04.2007 0:25
зайка   люди помогите плиз, беру самую простую функцию y=x…   4.07.2008 21:03
volvo   Что именно "про точки"? Я вот только что…   5.07.2008 0:30
зайка   пишет "invalid floating point operation…   5.07.2008 2:41
volvo   Во-первых, какой у тебя компилятор? А во-вторых, п…   5.07.2008 2:51
зайка   я честно говоря не особо разбираюсь в компиляторах…   5.07.2008 4:12
volvo   Угу :yes2: ... Я так и думал: Замени на function…   5.07.2008 4:39
зайка   Угу :yes2: ... Я так и думал: Замени на functio…   5.07.2008 14:17
volvo   Еще бы увидеть саму эту функцию, что именно ты пыт…   5.07.2008 15:26
зайка   Еще бы увидеть саму эту функцию, что именно ты пы…   5.07.2008 15:33
volvo   Другими словами: F = 10 * ((-1)0 * 19! * (4…   5.07.2008 16:34
зайка   не преувеличила либо ты не правильно посчитал либо…   5.07.2008 19:01
volvo   А с чего ты вообще решила, что твое значение верн…   5.07.2008 20:07
зайка   ну ты понимаешь что здесь где-то ошибка :ypriamii:…   5.07.2008 21:11
зайка   немного не так надо ещё 20-2k+i   5.07.2008 22:56


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

 





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