Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика, система уравнений
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Markson
У меня небольшая проблемка, задачка на графику, я тут сидел и придумал как нарисовать график для одного уравнения, но совсем не получается нарисовать для системы состоящей из двух уравнений, помогите пожалуйста доделать.
вобщем вот условие самой задачки которую нада зделать:
Построить на экране множество точек, координаты которых удовлетворяют такую неровность или систему неровностей: 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
if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка
Markson
Цитата(Client @ 22.04.2009 20:45) *

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


Здесь требует then но я немогу понять што писать после then, если ничего не написать то отображает ток линии а график не рисует.
Client
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
uses crt,graph;
var grDriver,grMode:integer;
	 x,y:real;
	 i:integer;
function f(x:real):real;
begin
		{што писать здесь?};
end;
Markson
Все разобрался, тут все делается намного проще, проверка необизательна. Вот код готовой проги, может комуто когдато пригодится.

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.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.