ZimAN | Дата: Четверг, 08.05.2008, 07:02 | Сообщение # 1 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Построить на экране компьютера график следующей функции: как такое сделать ???
|
|
| |
Pavel | Дата: Четверг, 08.05.2008, 09:27 | Сообщение # 2 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| У тебя график будет состоять из двух частей. Одна часть, если x > 3, будет прямая -3x+9, вторая - та дробь. И, например, с -10 начинаешь рисовать график до 3, и с 3 до 10 скажем, с шагом 0,01. Шаг выберешь опытным путем, чтоб красиво смотрелось. Т.е. сначала moveTo, затем LineTo. Вот и все.
|
|
| |
ZimAN | Дата: Четверг, 08.05.2008, 18:44 | Сообщение # 3 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| а можно, чтобы Вы мне немного помогли КОДОМ !?!??! , а то я графику вообще не понимаю... Учить буду (это долго), а задачу надо преподу поскорее отдать ...
|
|
| |
Alexander | Дата: Суббота, 10.05.2008, 20:23 | Сообщение # 4 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| В разделе "теория" есть две небольшие книги по графике в TP. Книжка "Графика в TP" на половину посвящена построению графиков, исходников там хоть отбавляй.
Скажем дружно- нафиг нужно!
|
|
| |
ZimAN | Дата: Вторник, 13.05.2008, 01:49 | Сообщение # 5 |
Знакомый
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Вот , сделал ! Может у кого-то тоже будет вопрос по Графиках, то привожу свой код , типа как образец будет... Code Program Lab; uses Graph; const step=25; var GraphDriver, GraphMode:integer; XX,YY:integer; r:integer; S:string;
{- Formula -} Function f(x:real):real; begin if x<=3 then f:=(sqr(x)*x)/(sqr(x)+8) else begin f:=(-3)*x+9; SetColor(2); end; end;
{- OSI -} procedure OSI; begin SetColor(8); Line (XX,0,XX,GetMaxY); Line (0,YY,GetMaxX,YY);
Line (GetMaxX-10,(YY)-5,GetMaxX,YY); Line (GetMaxX-10,(YY)+5,GetMaxX,YY);
Line(XX,0,(XX)-5,10); Line(XX,0,(XX)+5,10);
OutTextXY(GetMaxX-10,YY+20,'X'); OutTextXY(XX+10,10,'Y'); end;
{- Grafik -} Procedure GRP; var x0,y0,x1,y1:integer; x:real; begin for x0:=0 to GetMaxX do begin x:=(x0-XX)/step; y0:=Round(YY-step*f(x));
Line(x0,y0,x1,y1); x1:=x0; y1:=y0; end; end;
{- Razmetka Osei -} Procedure PDL; var i,j: integer; s:string[7]; begin SetColor(8); j:=0; repeat i:=XX+(-j)*step; Line (Round(i),YY-5,Round(i),YY+5); if j<>0 then begin str(-j:2,s); OutTextXY(Round(i)-10,YY+10,s); end; i:=XX+j*step; Line(Round(i),YY-5,Round(i),YY+5); if j<>0 then begin str (j:2,s); OutTextXY(Round(i)-10,YY+10,s); end; j:=j+1; until j=23; j:=0; repeat i:=YY-j*step; Line (XX+3,Round(i),XX-3,Round(i)); if j<>0 then begin str(j:1,s); OutTextXY(XX-20,Round(i)-2,s); end; i:=YY+j*step; Line(XX+3,Round(i),XX-3,Round(i)); if j<>0 then begin str(-j:1,s); OutTextXY(XX-30,Round(i)-2,s); end; j:=j+1; until j=16; end;
{- Osnovnaya Programma -} begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode,''); XX:=GetMaxX div 2; YY:=GetMaxY div 2; SetBkColor (15); SetColor (1); ClearDevice; OSI; PDL; SetColor(1); GRP; SetColor(1); OutTextXY(10,30,'Esli x<=3, togda f=(sqr(x)*x)/(sqr(x)+8) '); SetColor(2); OutTextXY(10,60,'Esli x>3, togda f=(-3)*x+9'); readln; end.
|
|
| |