Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ ненавистная графика (Объединено)

Автор: AlexSt 17.05.2007 10:12

Написать программу построения графика функции. Вывод графика осуществлять в созданном на экране окне , в другом окне выполнить вывод уравнения функции с конкретными значениями параметров. Выполнить смену 3-х экранов с различными значениями параметров.
Цепная линия:


Добавлено через 4 мин.
там наверное плохо видно формулу:


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Автор: Lapp 17.05.2007 10:47

Глянь здесь: http://forum.pascal.net.ru/index.php?s=&showtopic=2729&view=findpost&p=23770
Я не совсем понял про окна: это на одном экране? Если так, то можно использовать SetViewPort.

Автор: AlexSt 20.05.2007 22:37

Написать программу построения графика функции. Вывод графика осуществлять в созданном на экране окне , в другом окне выполнить вывод уравнения функции с конкретными значениями параметров. Выполнить смену 3-х экранов с различными значениями параметров.
Цепная линия:



Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Гость 22.05.2007 15:08

ну может поможите?

Автор: Ozzя 22.05.2007 15:22

В ФАК'е Альтаир выкладывал код для построения графика любой ф-ции. Ищи.

Автор: volvo 22.05.2007 15:23

Ну а в чем проблема? Это у тебя обычный график, не параметрический...

Тему "Построение любого графика" видел? Подставляешь туда свою функцию, и она чертит тебе график... Если надо 3 штуки - в цикле...

Автор: Lapp 22.05.2007 17:05

 ! 
ALexSt, дублировать темы - твое хобби? Оно не приветствуется тут..


Автор: AlexSt 26.05.2007 0:40

good.gif good.gif good.gif как записать эту формулу на паскале? good.gif good.gif good.gif


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Tan 26.05.2007 0:49

y := A * (Exp(x/2) - Exp(-x/2)) / 2;
Это гиперболический синус ?

Автор: AlexSt 26.05.2007 0:53

Спасибо, а вот про ГИПЕРсинус не имею никакого понятия, в задании ф-ция значится как цепная линия

Автор: AlexSt 26.05.2007 15:30

я подставил в задачку Альтаира по построению любой функции свою, получилась какая-то ерунда. Вот оно:

program grafshit;
Uses Graph,crt;
const shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
grMode : Integer;

x,y,a:real;{extended;}
i:integer;
function f(a,x:real):real;
begin y:=a*(exp(x/2)+exp(-x/2))/2
end;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, 'c:\bp\bgi\');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY); {}
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY); {}

x:=lgr; {}
while x<=pgr do {}
begin
readln(x);
readln(a);
f(a,x);;
if x<>2 then begin y:=abs(x/(x-2))-1; {}
y:=f(a,x);
writeln(y:1:8); {}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end; {}
x:=x+shag;
end;
readkey;
closegraph;
end.


И, ещё может подскажите что такое A в формуле, как сделать три окна! на одном экране(lapp писал что через SetViewPort - но как?)&( я даже не пойму что именно должно в них быть), зачем делать смену экранов?
Пожалуйста напишите в пустые фигурные скобки в проге что там происходит!

Автор: Ozzя 26.05.2007 17:06

Что-то рисует

program grafshit;
Uses Graph,crt;
const shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
grMode : Integer;

x,y,a:real;{extended;}
i:integer;
function f(a,x:real):real;
begin
y:=a*(exp(x/2)+exp(-x/2))/2;
f:=y;
end;
Begin
grDriver:=Detect;
InitGraph(grDriver, grMode, 'c:\bp\bgi\');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY); {}
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY); {}

x:=-5; {}
{readln(x);}
readln(a);


while x<=5 do {}
begin
{f(a,x);;}
if x<>2 then
begin
{y:=abs(x/(x-2))-1; {}
y:=f(a,x);
{writeln(y:1:8); {}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end; {}
x:=x+shag;
end;
readkey;
closegraph;
end.

Автор: AlexSt 27.05.2007 0:47

а то ли "рисует"? я не думаю что тут 3 "окна"!

Автор: volvo 27.05.2007 0:53

Про цикл никогда не слышал?

Что, большая проблема зациклить приведенный код, и изменять A внутри этого цикла? Все равно, НИКТО не сможет решить эту задачу именно так, как это нужно тебе... Потому что ВСЕГДА ты будешь недоволен: тут пиксель не в том месте зажегся, тут шрифт не тот, здесь окно должно быть не сверху, а снизу, ну и т.д. dry.gif

Автор: AlexSt 27.05.2007 1:27

Ну, извините. Зачёт послезавтра, а мне нужно точное решение. Volvo, ты думаешь "3 окна" в условии это 3 варианта изменения параметра(я не знаю что имеется ввиду под тремя окнами). unsure.gif

Автор: Ozzя 29.05.2007 13:42

Цитата(AlexSt @ 26.05.2007 22:27) *

Ну, извините. Зачёт послезавтра, а мне нужно точное решение. Volvo, ты думаешь "3 окна" в условии это 3 варианта изменения параметра(я не знаю что имеется ввиду под тремя окнами). unsure.gif

Графические окна - SetViewPort. Тебе же Lapp сказал уже.

Автор: Гость 4.06.2007 18:55

подскажите плииз! как в паскале степени и корни изображауться?? blink.gif

Автор: Ozzя 4.06.2007 19:06

http://forum.pascal.net.ru/index.php?act=findpost&pid=38227