Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 00:04   #1
momentow
 
Регистрация: 23.12.2010
Сообщений: 7
По умолчанию График функции на паскале, чуть-чуть поправить

График функции арккосинуса надо построить по точкам. В моём исходнике не правильно строится график для отрицательных Х, и график немного не совпадает с осями.. Уже битый час голову ломаю, может кто помочь сможет. Вот исходник.
Цитата:
uses
crt,graph;
const
K=55;
Cx=300;
Cy=250;
s:array[1..5] of string=('','pi','','pi/2','pi/4');
s1:array[1..5] of string=('','','','','');
a:array[1..4] of string=('0.5','1','','');
a1:array[1..4] of string=('','','-1','-0.5');
var gd, gm,d,r,i,x1,x2,y1,y2:integer;
function Arccos (x : real) : real;
begin
if (x<=1) and (x>0) then Arccos := Arctan(Sqrt(1-sqr(x))/x)
else if (x<0) and (x>=-1) then arccos:= arctan(sqrt(1-sqr(x))/x);
end;
Function x (p: integer): real;
Begin
X:=(p-cx)/k;
End;
Function y(p: real): integer;
Begin
Y:=round (-p*k+cy);
End;
Procedure sk;
begin
clrscr;
d:=detect;
initgraph(d,r,'');
setbkcolor(15); {zadaem cvet ekrana}
setcolor(7);
x1:=40;
x2:=40;
y1:=40;
y2:=40;
{risuem setku}
while x1<=600 do
begin
setcolor(7);
setlinestyle(0,0,1);
line(0,y1,640,y2);
line(x1,0,x2,480);
setcolor(8);
setlinestyle(0,0,3);
line(315,y1,325,y2);
line(x1,235,x2,245);
x1:=x1+40;
x2:=x2+40;
y1:=y1+40;
y2:=y2+40;
end;
{risuem osi koordinat}
setcolor(8);
setlinestyle(0,solidln,3);
line(0,240,640,240);
line(320,0,320,480);
line(320,0,317,20);
line(320,0,323,20);
line(640,240,620,237);
line(640,240,620,243);
{podpisivaem osi koordinat}
settextstyle(1,0,2);
outtextxy(330,5,'Y');
outtextxy(620,250,'X');
outtextxy(297,245,'O');
y1:=37;
y2:=277;
for i:=1 to 5 do
begin
outtextxy(275,y1,s[i]);
outtextxy(265,y2,s1[i]);
y1:=y1+40;
y2:=y2+40;
end;
settextstyle(10,1,2);
x1:=365;
x2:=165;
for i:=1 to 4 do
begin
outtextxy(x1,250,a[i]);
outtextxy(x2,250,a1[i]);
x1:=x1+40;
x2:=x2+40;
end;
end;
begin
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,'');
Sk;
Setcolor (14);
Moveto (0, y(arccos(x(0))));
For i:=0 to 1200 do
Lineto (I, y(arccos(x(i))));
Readln;
Closegraph;
End.

Последний раз редактировалось momentow; 28.12.2010 в 00:08.
momentow вне форума Ответить с цитированием
Старый 28.12.2010, 01:28   #2
momentow
 
Регистрация: 23.12.2010
Сообщений: 7
По умолчанию

Подправил дело с осями, ребят помогите пожалуйста доделать график(для отрицательных х функция не шурычит) - через 7 часов курсовой проект сдавать, а мне ещё блок схемки ко всем программам рисовать и в ворде оформление делать, в том числе и на эту лабу. Зачёт получить хочется. Вот подправленный исходник:

Цитата:
uses
crt,graph;
const
K=55;
Cx=300;
Cy=250;
s:array[1..5] of string=('','pi','','pi/2','pi/4');
s1:array[1..5] of string=('','','','','');
a:array[1..4] of string=('0.5','1','','');
a1:array[1..4] of string=('','','-1','-0.5');
var gd, gm,d,r,i,x1,x2,y1,y2:integer;
function Arccos (x : real) : real;
begin
if (x<1) and (x>0) then Arccos := Arctan(Sqrt(1-sqr(x))/x)
else if (x<0) and (x>-1) then arccos:= arctan(sqrt(1-sqr(x))/x);
end;
Function x (p: integer): real;
Begin
X:=(p-cx)/k;
End;
Function y(p: real): integer;
Begin
Y:= round(-p*k+cy);
End;
Procedure sk;
begin
clrscr;
d:=detect;
initgraph(d,r,'');
setbkcolor(15); {zadaem cvet ekrana}
setcolor(7);
x1:=20;
x2:=20;
y1:=10;
y2:=10;
{risuem setku}
while x1<=600 do
begin
setcolor(7);
setlinestyle(0,0,1);
line(0,y1,640,y2);
line(x1,0,x2,480);
setcolor(8);
x1:=x1+20;
x2:=x2+20;
y1:=y1+20;
y2:=y2+20;
end;
{risuem osi koordinat}
setcolor(8);
setlinestyle(0,solidln,3);
line(0,250,640,250);
line(300,0,300,480);
line(300,0,297,20);
line(300,0,303,20);
line(640,250,620,247);
line(640,250,620,253);
{podpisivaem osi koordinat}
settextstyle(1,0,2);
outtextxy(310,0,'Y');
outtextxy(620,255,'X');
outtextxy(305,250,'O');
end;
begin
Clrscr;
Gd:=0;
Gm:=0;
Initgraph (gd, gm,'');
Sk;
Setcolor (14);
Moveto (0, y(arccos(x(0))));
For i:=0 to 1200 do
Lineto (I, y(arccos(x(i))));
Readln;
Closegraph;
End.
momentow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа часы,надо чуть-чуть переделать RadioDream Помощь студентам 1 21.10.2010 19:29
нашел поиском нужный макрос, чуть чуть бы доработать zander Microsoft Office Excel 3 30.09.2009 12:19
ZuBy MP v 2.01 (прошу чуть потестить) ZuBy Мультимедиа в Delphi 49 29.08.2009 10:59
Чуть не понятно с WinSock на делфи zotox Помощь студентам 4 07.04.2009 20:13