MOTOCoder » 26 фев 2008, 20:24
Вот вам решение функции:
[syntax='Delphi']
program func;
uses
crt, graph;
var
A,B:integer;
x,y:real;
gd,gm:integer;
cx,cy:integer;
ox,oy:real;
K:integer;
D:real;
function GrFunc(x:real):real;
begin
if x<>0 then
GrFunc:=-sqr(sin(x))/x
else GrFunc:=0;
end;
begin
writeln('Введите A:');
readln(A);
writeln('Введите B:');
readln(B);
writeln('Введите K:');
readln(K);
writeln('Введите D:');
readln(D);
InitGraph(gd,gm,'');
cx:=GetMaxX div 2;
cy:=GetMaxY div 2;
Line(cx,0,cx,GetMaxY);
Line(0,cy,GetMaxX,cy);
setcolor(10);
ox:=a;
oy:=GrFunc(ox);
x:=a;
while x<=b do
begin
Y:=GrFunc(x);
Line(cx+Round(ox*K),cy+Round(oy*K),cx+Round(X*K),cy+Round(Y*K));
ox:=X;
oy:=Y;
X:=X+D;
end;
repeat until keypressed;
CloseGraph;
end.
[/syntax]
Начальные значения брал следующие:
A=-10
B=10
K=30(масштабный коэффициент)
D=0.5(шаг рассчетов)
Картина получилась практически аналогичной той, что построил AdvancedGrapher.
Вот вам решение функции:
[syntax='Delphi']
program func;
uses
crt, graph;
var
A,B:integer;
x,y:real;
gd,gm:integer;
cx,cy:integer;
ox,oy:real;
K:integer;
D:real;
function GrFunc(x:real):real;
begin
if x<>0 then
GrFunc:=-sqr(sin(x))/x
else GrFunc:=0;
end;
begin
writeln('Введите A:');
readln(A);
writeln('Введите B:');
readln(B);
writeln('Введите K:');
readln(K);
writeln('Введите D:');
readln(D);
InitGraph(gd,gm,'');
cx:=GetMaxX div 2;
cy:=GetMaxY div 2;
Line(cx,0,cx,GetMaxY);
Line(0,cy,GetMaxX,cy);
setcolor(10);
ox:=a;
oy:=GrFunc(ox);
x:=a;
while x<=b do
begin
Y:=GrFunc(x);
Line(cx+Round(ox*K),cy+Round(oy*K),cx+Round(X*K),cy+Round(Y*K));
ox:=X;
oy:=Y;
X:=X+D;
end;
repeat until keypressed;
CloseGraph;
end.
[/syntax]
Начальные значения брал следующие:
A=-10
B=10
K=30(масштабный коэффициент)
D=0.5(шаг рассчетов)
Картина получилась практически аналогичной той, что построил AdvancedGrapher.