IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Графика, система уравнений
Markson
сообщение 22.04.2009 20:21
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


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


Сообщение отредактировано: Markson - 22.04.2009 21:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
Client
сообщение 22.04.2009 20:45
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


if (2*y>=sqr(x)) and (y<=-2*sqr(x)+3*x) then отрисовка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Markson
сообщение 22.04.2009 21:12
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


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

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


Здесь требует then но я немогу понять што писать после then, если ничего не написать то отображает ток линии а график не рисует.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 22.04.2009 21:37
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


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;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Markson
сообщение 22.04.2009 21:52
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


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


Сообщение отредактировано: Markson - 22.04.2009 21:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Markson
сообщение 23.04.2009 1:12
Сообщение #6





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


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

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.



Сообщение отредактировано: Markson - 23.04.2009 1:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 14:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"