построить график функции y=e^sinx при х<0 в паскале что-то у меня вообще не чего не выходит. Парни выручайте нужно очень срочно.
Lapp
3.06.2011 8:27
Цитата(Neuropunka @ 3.06.2011 3:21)
построить график функции y=e^sinx при х<0 в паскале что-то у меня вообще не чего не выходит.
Покажи, что и как не выходит. Поможем.
Neuropunka
3.06.2011 18:25
Program UniversalGraph; Uses Graph;
Type Fun = Function(X:Real):Real;
Procedure Graphic(F:Fun; XBeg,XEnd:Real); Var Max, Min, {Экстремальные точки функции в пределах диапазона} I, {Переменная цикла} Step, {Расчитываемый шаг} GradX, {Приращение функции на один шаг по X} GradY: Real; {Приращение функции на один шаг по Y} GraphicX, {Координата по X} GraphicY: Integer; {Координата по Y} Flag: Boolean; {Флаг - перемещена первая точка}
Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; Begin Color:=GetColor; SetColor (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Line (1,X,GetMaxX,X); {Горизонтальная линия} Line (GetMaxX-4,X+5,GetMaxX,X); {Стрелочка} Line (GetMaxX-4,X-5,GetMaxX,X); {Стрелочка} Line (Y,1,Y,GetMaxY); {Вертикальная линия } Line (Y-5,5,Y,1); {Стрелочка} Line (Y+5,5,Y,1); {Стрелочка} SetColor (Color); End;
Begin Step:=(XEnd-XBeg)/(GetMaxY-40); I:=XBeg; Max:=F(XBeg); Min:=F(XBeg); While I<=(XEnd+Step) Do Begin If Max<F(I) Then Max:=F(I); If Min>F(I) Then Min:=F(I); I:=I+Step; End; GradX:=GetMaxX/(XEnd-XBeg); GradY:=GetMaxY/(Max-Min); Coord (XBeg, XEnd, Min, Max);
Flag:=True; I:=XBeg; While I<=(XEnd+Step) Do Begin GraphicX:=Round(GradX*(I-XBeg)); GraphicY:=Round(GradY*(Max-F(I))); If Flag Then MoveTo (GraphicX,GraphicY); { PutPixel(GraphicX,GraphicY,15);} LineTo(GraphicX,GraphicY); I:=I+Step; Flag:=False; End;
End;
{$F+} {Ключи ассемблирования}
Function F1(X:Real):Real; Begin F1:=Sin(x)+COS(x/2); End;
Procedure GraphicIni; Var Mode, DriverDet: Integer; Begin Mode:=0; DriverDet:=Detect; InitGraph(Mode,DriverDet,'c:\BP\BGI'); SetColor(15); End;
{$F-} {Ключи ассемблирования}
Begin GraphicIni; Graphic(F1,-10,10); ReadLn; CloseGraph; End.
Добавлено через 3 мин. Это не так, я уже поняла, но больше я не понимаю как и что делать, хоть ты меня по лбу бей, а это нужно к 6 июню сделать или мне капец... ( Парни объясните нормально как делать?
Добавлено через 4 мин.
Цитата(Neuropunka @ 3.06.2011 15:25)
Program UniversalGraph; Uses Graph;
Type Fun = Function(X:Real):Real;
Procedure Graphic(F:Fun; XBeg,XEnd:Real); Var Max, Min, {Экстремальные точки функции в пределах диапазона} I, {Переменная цикла} Step, {Расчитываемый шаг} GradX, {Приращение функции на один шаг по X} GradY: Real; {Приращение функции на один шаг по Y} GraphicX, {Координата по X} GraphicY: Integer; {Координата по Y} Flag: Boolean; {Флаг - перемещена первая точка}
Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; Begin Color:=GetColor; SetColor (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Line (1,X,GetMaxX,X); {Горизонтальная линия} Line (GetMaxX-4,X+5,GetMaxX,X); {Стрелочка} Line (GetMaxX-4,X-5,GetMaxX,X); {Стрелочка} Line (Y,1,Y,GetMaxY); {Вертикальная линия } Line (Y-5,5,Y,1); {Стрелочка} Line (Y+5,5,Y,1); {Стрелочка} SetColor (Color); End;
Begin Step:=(XEnd-XBeg)/(GetMaxY-40); I:=XBeg; Max:=F(XBeg); Min:=F(XBeg); While I<=(XEnd+Step) Do Begin If Max<F(I) Then Max:=F(I); If Min>F(I) Then Min:=F(I); I:=I+Step; End; GradX:=GetMaxX/(XEnd-XBeg); GradY:=GetMaxY/(Max-Min); Coord (XBeg, XEnd, Min, Max);
Flag:=True; I:=XBeg; While I<=(XEnd+Step) Do Begin GraphicX:=Round(GradX*(I-XBeg)); GraphicY:=Round(GradY*(Max-F(I))); If Flag Then MoveTo (GraphicX,GraphicY); { PutPixel(GraphicX,GraphicY,15);} LineTo(GraphicX,GraphicY); I:=I+Step; Flag:=False; End;
End;
{$F+} {Ключи ассемблирования}
Function F1(X:Real):Real; Begin F1:=Sin(x)+COS(x/2); End;
Procedure GraphicIni; Var Mode, DriverDet: Integer; Begin Mode:=0; DriverDet:=Detect; InitGraph(Mode,DriverDet,'c:\BP\BGI'); SetColor(15); End;
{$F-} {Ключи ассемблирования}
Begin GraphicIni; Graphic(F1,-10,10); ReadLn; CloseGraph; End.
Добавлено через 3 мин. Это не так, я уже поняла, но больше я не понимаю как и что делать, хоть ты меня по лбу бей, а это нужно к 6 июню сделать или мне капец... ( Парни объясните нормально как делать?
Добавлено через 1 мин.
Program UniversalGraph; Uses Graph;
Type Fun = Function(X:Real):Real;
Procedure Graphic(F:Fun; XBeg,XEnd:Real); Var Max, Min, {Экстремальные точки функции в пределах диапазона} I, {Переменная цикла} Step, {Расчитываемый шаг} GradX, {Приращение функции на один шаг по X} GradY: Real; {Приращение функции на один шаг по Y} GraphicX, {Координата по X} GraphicY: Integer; {Координата по Y} Flag: Boolean; {Флаг - перемещена первая точка}
Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; Begin Color:=GetColor; SetColor (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Line (1,X,GetMaxX,X); {Горизонтальная линия} Line (GetMaxX-4,X+5,GetMaxX,X); {Стрелочка} Line (GetMaxX-4,X-5,GetMaxX,X); {Стрелочка} Line (Y,1,Y,GetMaxY); {Вертикальная линия } Line (Y-5,5,Y,1); {Стрелочка} Line (Y+5,5,Y,1); {Стрелочка} SetColor (Color); End;
Begin Step:=(XEnd-XBeg)/(GetMaxY-40); I:=XBeg; Max:=F(XBeg); Min:=F(XBeg); While I<=(XEnd+Step) Do Begin If Max<F(I) Then Max:=F(I); If Min>F(I) Then Min:=F(I); I:=I+Step; End; GradX:=GetMaxX/(XEnd-XBeg); GradY:=GetMaxY/(Max-Min); Coord (XBeg, XEnd, Min, Max);
Flag:=True; I:=XBeg; While I<=(XEnd+Step) Do Begin GraphicX:=Round(GradX*(I-XBeg)); GraphicY:=Round(GradY*(Max-F(I))); If Flag Then MoveTo (GraphicX,GraphicY); { PutPixel(GraphicX,GraphicY,15);} LineTo(GraphicX,GraphicY); I:=I+Step; Flag:=False; End;
End;
{$F+} {Ключи ассемблирования}
Function F1(X:Real):Real; Begin F1:=Sin(x)+COS(x/2); End;
Procedure GraphicIni; Var Mode, DriverDet: Integer; Begin Mode:=0; DriverDet:=Detect; InitGraph(Mode,DriverDet,'c:\BP\BGI'); SetColor(15); End;
{$F-} {Ключи ассемблирования}
Begin GraphicIni; Graphic(F1,-10,10); ReadLn; CloseGraph; End.
Добавлено через 3 мин. Это не так, я уже поняла, но больше я не понимаю как и что делать, хоть ты меня по лбу бей, а это нужно к 6 июню сделать или мне капец... ( Парни объясните нормально как делать?
Добавлено через 4 мин.
Lapp
4.06.2011 3:25
несколько наворочено вышло )) когда будет свободная минутка - постараюсь разобраться и ответить. Забегай утром ))
Neuropunka
4.06.2011 4:00
Цитата(Lapp @ 4.06.2011 0:25)
несколько наворочено вышло )) когда будет свободная минутка - постараюсь разобраться и ответить. Забегай утром ))
Акей, тока пожалуйста помоги.
Lapp
4.06.2011 4:53
Постой, а почему у тебя в функции стоит совсем не то, что тебе надо? Почему бы не сделлать так:
Function F1(X:Real):Real; Begin F1:= Exp(Sin(x)); End;
- а?
И убери комментарий про "ключи ассемблирования", он бросается в глаза и смешит своей нелепостью )). А директиву {$F-} переставь к концу F1.
Neuropunka
4.06.2011 5:11
Цитата(Lapp @ 4.06.2011 1:53)
Постой, а почему у тебя в функции стоит совсем не то, что тебе надо? Почему бы не сделлать так:
Function F1(X:Real):Real; Begin F1:= Exp(Sin(x)); End;
- а?
И убери комментарий про "ключи ассемблирования", он бросается в глаза и смешит своей нелепостью )). А директиву {$F-} переставь к концу F1.
в том то и дело что я только эту знаю как делать, а другие нуль... А мне нужна y=e^sinx при х<0, а не x=a(sh(t) -t), y=a(ch(t)-1) (a>0) я даже начало не могу додуматься как делать. Можешь кинуть сразу готовый код, мне как-то не удобно просить, но выхода нету...
Lapp
4.06.2011 5:18
Цитата(Neuropunka @ 4.06.2011 2:11)
в том то и дело что я только эту знаю как делать, а другие нуль... А мне нужна y=e^sinx при х<0, а не x=a(sh(t) -t), y=a(ch(t)-1) (a>0) я даже начало не могу додуматься как делать. Можешь кинуть сразу готовый код, мне как-то не удобно просить, но выхода нету...
Выход есть всегда )). Попробуй to pull yourself together.
Я же тебе написал, что и как нужно изменить, чтобы рисовать твою любимую экспоненту синуса! Сделай это, и получишь свой график. ПОСЛЕ этого займемся пределами по x (кстати, обнародуй левую границу тоже, а то правая есть, 0, а вот рисовать до минус бесконечности я не умею)).
Neuropunka
4.06.2011 5:24
Цитата(Lapp @ 4.06.2011 2:18)
Выход есть всегда )). Попробуй to pull yourself together.
Я же тебе написал, что и как нужно изменить, чтобы рисовать твою любимую экспоненту синуса! Сделай это, и получишь свой график. ПОСЛЕ этого займемся пределами по x (кстати, обнародуй левую границу тоже, а то правая есть, 0, а вот рисовать до минус бесконечности я не умею)).
Вот ты тока что написал я прочитала, и не чего не поняла... вообще можещь хоть начало кинуть, а дальше я уже сама
Добавлено через 2 мин.
Цитата(Lapp @ 4.06.2011 2:18)
Выход есть всегда )). Попробуй to pull yourself together.
Я же тебе написал, что и как нужно изменить, чтобы рисовать твою любимую экспоненту синуса! Сделай это, и получишь свой график. ПОСЛЕ этого займемся пределами по x (кстати, обнародуй левую границу тоже, а то правая есть, 0, а вот рисовать до минус бесконечности я не умею)).
Ты сейчас бьёшь по чайнику, и поверь до него очень тяжко достучатся...
Lapp
4.06.2011 5:33
Цитата(Neuropunka @ 4.06.2011 2:24)
Ты сейчас бьёшь по чайнику, и поверь до него очень тяжко достучатся...
))) чем труднее достучаться, тем слаще потом чай ))
Так, смотри. Я взял тот код, который ты привела, и заменил в нем строчку
F1:=Sin(x)+COS(x/2);
на такую:
F1:= Exp(Sin(x));
Попробуй сделать то же самое и рапортуй о результатах )).
Добавлено через 4 мин. p.s. сиб за плюс )). ты забыла добавить: добрый, ласковый, симпатичный... ))
Neuropunka
4.06.2011 5:45
=)) ну прости))) сяс сижу ковыряюсь(((
Добавлено через 5 мин.
Ошибка в Color:=GetColor;
Program UniversalGraph; Uses Graphabc;
Type Fun = Function(X:Real):Real;
Procedure Graphic(F:Fun; XBeg,XEnd:Real); Var Max, Min, {Экстремальные точки функции в пределах диапазона} I, {Переменная цикла} Step, {Расчитываемый шаг} GradX, {Приращение функции на один шаг по X} GradY: Real; {Приращение функции на один шаг по Y} GraphicX, {Координата по X} GraphicY: Integer; {Координата по Y} Flag: Boolean; {Флаг - перемещена первая точка}
Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; Begin Color:=GetColor; Set Color (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Line (1,X,GetMaxX,X); {Горизонтальная линия} Line (GetMaxX-4,X+5,GetMaxX,X); {Стрелочка} Line (GetMaxX-4,X-5,GetMaxX,X); {Стрелочка} Line (Y,1,Y,GetMaxY); {Вертикальная линия } Line (Y-5,5,Y,1); {Стрелочка} Line (Y+5,5,Y,1); {Стрелочка} SetColor (Color); End;
Begin Step:=(XEnd-XBeg)/(GetMaxY-40); I:=XBeg; Max:=F(XBeg); Min:=F(XBeg); While I<=(XEnd+Step) Do Begin If Max<F(I) Then Max:=F(I); If Min>F(I) Then Min:=F(I); I:=I+Step; End; GradX:=GetMaxX/(XEnd-XBeg); GradY:=GetMaxY/(Max-Min); Coord (XBeg, XEnd, Min, Max);
Flag:=True; I:=XBeg; While I<=(XEnd+Step) Do Begin GraphicX:=Round(GradX*(I-XBeg)); GraphicY:=Round(GradY*(Max-F(I))); If Flag Then MoveTo (GraphicX,GraphicY); { PutPixel(GraphicX,GraphicY,15);} LineTo(GraphicX,GraphicY); I:=I+Step; Flag:=False; End;
End;
{$F+} {Ключи ассемблирования}
Function F1(X:Real):Real; Begin F1:= Exp(Sin(x); End;
Procedure GraphicIni; Var Mode, DriverDet: Integer; Begin Mode:=0; DriverDet:=Detect; InitGraph(Mode,DriverDet,'c:\BP\BGI'); SetColor(15); End;
{$F-} {Ключи ассемблирования}
Begin GraphicIni; Graphic(F1,-10,10); ReadLn; CloseGraph; End.
Lapp
4.06.2011 6:20
Почему SetColor распался на части? строка 23 И закрой скобку в той строке, которую изменяла (с экспонентой).
Neuropunka
4.06.2011 13:36
[quote name='Lapp' date='4.06.2011 3:20' post='156109'] Почему SetColor распался на части? строка 23 И закрой скобку в той строке, которую изменяла (с экспонентой). Procedure Coord (CoordYBeg, CoordYEnd, CoordHMin, CoordHMax: Real); Var GradX, GradYX: Real; X, Y: Integer; Color: Word; Begin Color:=GetColor; SetColor (7); GradX :=GetMaxX/(CoordYEnd-CoordYBeg); GradYX:=GetMaxY/(CoordHMax-CoordHMin); If (CoordYEnd>0) And (CoordYBeg<0) Then Y:=Round(GradX*(0-CoordYBeg)); If CoordYEnd<0 Then Y:=GetMaxY; If CoordYBeg>0 Then Y:=1; If (CoordHMin<0) And (CoordHMax>0) Then X:=Round(GradYX*(CoordHMax)); If CoordHMin>0 Then X:=GetMaxY; If CoordHMax<0 Then X:=1 ; Не извесный индификатор GetColor;
Lapp
4.06.2011 14:04
Neuropunka, ты плохо выспалась? не с той ноги встала?
Извини, но я на такой бред тебе отвечать не буду. Я тебе понятно пишу? правильно теги расставляю? вот и ты позаботься, пожалуйста..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.