У меня небольшая проблемка, задачка на графику, я тут сидел и придумал как нарисовать график для одного уравнения, но совсем не получается нарисовать для системы состоящей из двух уравнений, помогите пожалуйста доделать.
вобщем вот условие самой задачки которую нада зделать:
Построить на экране множество точек, координаты которых удовлетворяют такую неровность или систему неровностей: 2*y>=sqr(x) , y<=-2*sqr(x)+3*x
Я ниже дал код програмки которая рисует точки только одного уравнения, а именно: y=3+2/x+3/x
Нада только доделать под систему уравнений, буду очень благодарен за помощь.
uses crt,graph;
var grDriver,grMode:integer;
x,y:real;
i:integer;
function f(x:real):real;
begin
f:=3+2/x+3/sqr(x);
end;
procedure koordinate;
begin
setcolor(5);
setbkcolor(15);
Line(320,0,320,350);
Line(0,300,640,300);
Line(318,10,320,0);
Line(322,10,320,0);
Line(630,298,640,300);
Line(630,302,640,300);
SetLineStyle(DashedLn,0,1);
Line(0,240,640,240);
OutTextXY(310,305,'0');
OutTextXY(310,5,'Y'); OutTextXY(630,305,'X');
end;
begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'c:\tp7\bgi'); {zdes' ukazivat' svoy put' k moduliu graph}
koordinate;
for i:=-320 to 320 do begin
x:=0.05 *i;
if x<>0 then
begin
y:=f(x);
PutPixel(round(320+20*x),round(300-20*y),1);
end;
end;
readln;
closegraph;
end.
if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка
if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка
for i:=-320 to 320 do begin
x:=0.05 *i;
if x<>0 then
begin
y:=f(x);
{здесь проверку делай}
PutPixel(round(320+20*x),round(300-20*y),1);
end;
end;
uses crt,graph;
var grDriver,grMode:integer;
x,y:real;
i:integer;
function f(x:real):real;
begin
{што писать здесь?};
end;
Все разобрался, тут все делается намного проще, проверка необизательна. Вот код готовой проги, может комуто когдато пригодится.
uses crt,graph;
var grDriver,grMode:integer;
x,y:real;
i:integer;
j : integer;
function f1(x : real) : real;
begin
f1 := sqr(x)/2;
end;
function f2(x : real) : real;
begin
f2 := -2*sqr(x) +3*x;
end;
procedure koordinate;
begin
setcolor(5);
setbkcolor(15);
Line(320,0,320,350);
Line(0,300,640,300);
Line(318,10,320,0);
Line(322,10,320,0);
Line(630,298,640,300);
Line(630,302,640,300);
SetLineStyle(DashedLn,0,1);
Line(0,240,640,240);
OutTextXY(310,305,'0');
OutTextXY(310,5,'Y'); OutTextXY(630,305,'X');
end;
begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'c:\tp7\bgi'); {zdes' ukazivat' svoy put' k moduliu graph}
koordinate;
for i:=-320 to 320 do begin
x:=0.05 *i;
if x<>0 then
begin
y := f1(x);
PutPixel(round(320+20*x),round(300-20*y),1);
y := f2(x);
PutPixel(round(320+20*x),round(300-20*y),2);
for j:=-320 to 520 do
begin
y := 0.05*j;
if (y>=f1(x)) and (y<=f2(x)) then
PutPixel(round(320+20*x),round(300-20*y),15);
end;
end;
end;
readln;
closegraph;
end.