Pascal ABC. Построение графика функции и секторной диаграммы
Доброго времени суток всем!
У меня имеется две задачи. Условия такие:
Построить график функции y=cos(x-1)+abs(x)
При написании программы учесть изменение начального и конечного значения x, а также шага, с которым x изменяется. Предусмотреть вывод информации об ошибках.
Смог написать нечто такое
Но я не знаю, как можно вывести ошибки. График строится, но координатные линии куда-то "уезжают".
Есть вторая задача:
Построить секторную диаграмму - это круг, площади секторов которого пропорциональны соответствующим числовым величинам, взятым из некоторой совокупности. Для большей наглядности секторы диаграмм закрасить в разные цвета.
Насчёт этой ничего дельного в голову не пришло.
Поможете разобраться? Буду премного благодарен
Доброго времени суток всем!
У меня имеется две задачи. Условия такие:
Построить график функции y=cos(x-1)+abs(x)
При написании программы учесть изменение начального и конечного значения x, а также шага, с которым x изменяется. Предусмотреть вывод информации об ошибках.
Смог написать нечто такое
Код:
uses graphABC;
function F(x:real):real;
begin
F:=cos(x-1)+abs(x);
end;
var mx,my,max,min,x,x1,x2,dx:real;
x0,y0,i,n:integer;
s:string;
begin
writeln('Введите начальное значение x:');
readln(x1);
writeln('Введите конечное значение x:');
readln(x2);
writeln('Введите шаг x:');
readln(dx);
x0:=round(-(windowwidth-40)*x1/(x2-x1));
max:=F(x1);
min:=F(x1);
x:=x1;
while x<=x2 do
begin
if F(x)>max then max:=F(x)
else if F(x)<min then min:=F(x);
x:=x+dx;
end;
x0:=round(windowwidth*(-x1)/(x2-x1));
y0:=round(windowheight*max/(max-min));
mx:=(windowwidth-60)/(x2-x1);
my:=(y0-50)/max;
n:=8;
line(20,y0,windowwidth-20,y0);
line(x0,20,x0,windowheight-20);
for i:=1 to n do
begin
line(x0-3,y0-round(i*my*100),x0+3,y0-round(i*my*100));
line(x0-3,y0+round(i*my*100),x0+3,y0+round(i*my*100));
line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3);
line(x0-round(i*mx),y0+3,x0-round(i*mx),y0-3);
str(i*100,s);
textout(x0-30,y0-round(i*my*100),s);
textout(x0-35,y0+round(i*my*100),'-'+s);
str(i,s);
textout(x0+round(i*mx),y0+10,s);
textout(x0-round(i*mx),y0+10,'-'+s);
end;
textout(x0+5,y0+10,'0');
textout(windowwidth-30,y0-20,'X');
textout(x0+10,30, 'Y');
x:=x1;
dx:=0.001;
while x<=x2 do
begin
setpixel(x0+round(x*mx),y0-round(F(x)*my),clRed);
x:=x+dx;
end;
setfontsize(11);
textout(x0+30,0,'График функции cos(x-1)+abs(x)');
end.
Есть вторая задача:
Построить секторную диаграмму - это круг, площади секторов которого пропорциональны соответствующим числовым величинам, взятым из некоторой совокупности. Для большей наглядности секторы диаграмм закрасить в разные цвета.
Насчёт этой ничего дельного в голову не пришло.
Поможете разобраться? Буду премного благодарен