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

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

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

> построение графика функции
yar11
сообщение 14.03.2006 10:09
Сообщение #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 - 5.11.2006 19:00
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 15.03.2006 9:17
Сообщение #2


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

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

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


А какже

 x,y,a,b:real;


?

cool.gif


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

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


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

 



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