![]() |
|
#1
|
|||
|
|||
![]() Помогите построить график функции факториала
|
#2
|
|||
|
|||
![]() Ну дык строй. В чем проблемма?
функция выражается так: Код:
function Fact(N : Integer) : Integer; begin Result := 1; If N > 1 Then For I := 2 To N Do Result := Result * I; end; |
#3
|
|||
|
|||
![]() если не сложно можно код всей программы. подалуйсто
|
#4
|
|||
|
|||
![]() Не-а. Нельзя.
Делай сам, что будет не получаться - тогда спрашивай. |
#5
|
|||
|
|||
![]() дак вот проблема я только начинаю заниматься и мне гораздо легче разбираться уже с готовыми программами, а иначе в голове война мыслей и ноль на Харде
|
#6
|
|||
|
|||
![]() Разобраться и научиться - разные вещи. Или так и останешься - "разобраться могу, а вот написать - нет".
|
#7
|
|||
|
|||
![]() ну на самом деле просто срок сдачи завтра а понять и научиться за такой промежуток не успею
|
#8
|
||||
|
||||
![]() Знаешь, а задание, то несовсем понятно, для графика нужны координаты икс и игрек, если функция факториала считает что то одно, то как вычислить второе, а если и то и другое, то график прямая линия...
В начале был Бит, потом Байт и только потом появилось Слово... |
#9
|
|||
|
|||
![]() ну для простоты принять икс можно [1...4]
|
#10
|
|||
|
|||
![]() Блин, ребята, вы что!!!
Ну хоть определение факториала прочитайте. Факториал это есть функция от числа, т.е. у тебя есть и x и y. X - исходное число, Y - значение факториала этого числа... Кстати, не забудьте область определения факториала. |
#11
|
|||
|
|||
![]() ну да мы знаем что X челые числа в [1...4] а Y от X вычисляется и будет иметь тоже 4 значения. следоватьно график будет состоять из 4 точек...
Сам не могу. помогите |
#12
|
||||
|
||||
![]() Ну то что факториал это некоторая функция от числа это понятно...
Вопрос 3!=6 X=3, Y=6 так? Ну это одна точка...а остальные??? Значит задание должно быть не Цитата:
X=1..Y=1 X=2..Y=2 X=3..Y=6 Правильно я понял??? В начале был Бит, потом Байт и только потом появилось Слово... |
#13
|
|||
|
|||
![]() да! имея иксы программой расчитать игреки и построить график - соединив точки прямыми
|
#14
|
|||
|
|||
![]() Ну вот, набросал побыстрому,
создай проект, кинь на форму TPaintBox, у которого в событии OnPaint, пропиши PaintBox1Paint, и смотри на результат... Код:
function Fact(N : Integer) : Integer; var I:integer; begin Result := 1; If N >= 1 Then For I := 2 To N Do Result := Result * I; end; procedure TForm1.PaintBox1Paint(Sender: TObject); var x, x0, y0, scale:integer; begin with PaintBox1.Canvas do begin scale:=8; //размер построенного графика Pen.Color:=clBlack; x0:=(PaintBox1.Width div 2); //определим центр графика y0:=(PaintBox1.Height div 2); MoveTo(x0,10);LineTo(x0,PaintBox1.Height-10); //отрисуем оси X,Y MoveTo(10,y0);LineTo(PaintBox1.Width-10,y0); Pen.Color:=clGreen; MoveTo(x0,y0); for x:=1 to 4 do //ну и отрисуем график.. LineTo(x0+(x*scale), y0-(Fact(x)*scale)); end; end; Последний раз редактировалось Asinkrit, 10.01.2010 в 16:58. |
#15
|
|||
|
|||
![]() Код:
unit grfunc_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} Function f(x:real):real; begin f:=????????? // вот тут помогите вписать функцию факториала end; procedure GrOfFunc; var x1,x2:real; y1,y2:real; x:real; y:real; dx:real; l,b:integer; w,h:integer; mx,my:real; x0,y0:integer; begin l:=10; b:=Form1.ClientHeight-20; h:=Form1.ClientHeight-40; w:=Form1.Width-40; x1:=0; x2:=25; dx:=0.01; y1:=f(x1); y2:=f(x1); x:=x1; repeat y := f(x); if y < y1 then y1:=y; if y > y2 then y2:=y; x:=x+dx; until (x>=x2); my:=h/abs(y2-y1); mx:=w/abs(x2-x1); x0:=l; y0:=b-Abs(Round(y1*my)); with form1.Canvas do begin MoveTo(l,b);LineTo(l,b-h); MoveTo(x0,y0);LineTo(x0+w,y0); TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3)); TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3)); x:=x1; repeat y:=f(x); Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed; x:=x+dx; until (x>=x2); end; end; procedure TForm1.FormPaint(Sender: TObject); begin GrOfFunc; end; procedure TForm1.FormResize(Sender: TObject); begin form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight)); GrOfFunc; end; end. |