Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Графика, система уравнений

Автор: Markson 23.04.2009 0:21

У меня небольшая проблемка, задачка на графику, я тут сидел и придумал как нарисовать график для одного уравнения, но совсем не получается нарисовать для системы состоящей из двух уравнений, помогите пожалуйста доделать.
вобщем вот условие самой задачки которую нада зделать:
Построить на экране множество точек, координаты которых удовлетворяют такую неровность или систему неровностей: 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.

Автор: Client 23.04.2009 0:45

if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка

Автор: Markson 23.04.2009 1:12

Цитата(Client @ 22.04.2009 20:45) *

if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка


Здесь требует then но я немогу понять што писать после then, если ничего не написать то отображает ток линии а график не рисует.

Автор: Client 23.04.2009 1:37

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;

Автор: Markson 23.04.2009 1:52

uses crt,graph;
var grDriver,grMode:integer;
x,y:real;
i:integer;
function f(x:real):real;
begin
{што писать здесь?};
end;

Автор: Markson 23.04.2009 5:12

Все разобрался, тут все делается намного проще, проверка необизательна. Вот код готовой проги, может комуто когдато пригодится.


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.