Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 08.05.2012, 17:36   #1
Пользователь
 
Аватар для Serious
 
Регистрация: 05.01.2012
Сообщений: 44
Сказал Спасибо: 24
Имеет 4 спасибок в 4 сообщенях
Serious пока неопределено
По умолчанию TP графопостроитель

Извините что не по теме, но мне кажется толковые люди мне здесь очень помогут... Вообщем в 2х словах, в курсаче код нужно написать построение графика заданной функции. Измучался уже, код нашел,но когда запускал поначалу писал о ошибке GRAPH.TPU я так понял не находил, когда путь прописал (у меня в частности c:\tp\UNITS) то ничего вообще не выдавал...

собственно сам код:

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:\tp\BGI');
SetColor(15);
End;

{$F-} {Ключи ассемблирования}

Begin
GraphicIni;
Graphic(F1,-10,10);
ReadLn;
CloseGraph;
End.
Serious вне форума   Ответить с цитированием
Старый 08.05.2012, 22:48   #2
Пользователь
 
Аватар для kolr
 
Регистрация: 24.11.2009
Сообщений: 75
Сказал Спасибо: 5
Имеет 6 спасибок в 6 сообщенях
kolr пока неопределено
По умолчанию

на чом ты пишеш?(среда програмирования)
kolr вне форума   Ответить с цитированием
Старый 08.05.2012, 22:59   #3
Местный
 
Аватар для mikser
 
Регистрация: 26.01.2009
Сообщений: 1,097
Сказал Спасибо: 178
Имеет 119 спасибок в 84 сообщенях
mikser пока неопределено
По умолчанию

Похоже на Борланд паскаль.
__________________
Играю по фэншую используя /allblock, созерцая красоту игрового мира, сосредоточившись на получении энергии Ци при убийстве мобов.
icq=((2*3*(19^2)*37)-1)*9
mikser вне форума   Ответить с цитированием
Старый 08.05.2012, 23:31   #4
Пользователь
 
Аватар для Serious
 
Регистрация: 05.01.2012
Сообщений: 44
Сказал Спасибо: 24
Имеет 4 спасибок в 4 сообщенях
Serious пока неопределено
По умолчанию

Я этот код слизал отсюда http://tpxexe.narod.ru/graphdrawer.html [TURBO PASCAL]
Serious вне форума   Ответить с цитированием
Старый 10.05.2012, 01:56   #5
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Serious, что конкретно не работает? Что на экране отображается?

Программа должна вывести на дисплей графику и ожидать нажатия любой кнопки.

Существует ли папка c:\tp\BGI ?

Когда запускаешь эту программу что происходит из перечисленного?

1. выдает ошибку, какую?

2. пустой экран, если да то мигает ли текстовый курсор ввода?

3. программа запускается и тут же останавливается?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)

Последний раз редактировалось Yegor, 10.05.2012 в 01:58.
Yegor вне форума   Ответить с цитированием
Старый 10.05.2012, 05:58   #6
Пользователь
 
Аватар для Serious
 
Регистрация: 05.01.2012
Сообщений: 44
Сказал Спасибо: 24
Имеет 4 спасибок в 4 сообщенях
Serious пока неопределено
По умолчанию

Yegor, выдает ошибку, я так понимаю это из за ОС W7 ...

Папка c:\tp\BGI существует.
сам код исправно работает?
что мне нужно сделать?
Serious вне форума   Ответить с цитированием
Старый 10.05.2012, 10:26   #7
Пользователь
 
Аватар для kolr
 
Регистрация: 24.11.2009
Сообщений: 75
Сказал Спасибо: 5
Имеет 6 спасибок в 6 сообщенях
kolr пока неопределено
По умолчанию

код походу ок. турбо паскаль стар для 7 винды. попробуй free pascal или pascalABC
kolr вне форума   Ответить с цитированием
Старый 10.05.2012, 12:02   #8
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

В процедуре GraphicIni TP пытается переключиться в графический режим для вывода графики. Попробуй запустить TP в режиме совместимости.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 10.05.2012, 15:23   #9
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Досовский VGA режим у тебя пойдёт только в VM, DosBox и других dos-эмуляторах. Vista/7 его ни в каком режиме совместимоcти не эмулируют.

Последний раз редактировалось qwm, 10.05.2012 в 16:45. Причина: опечатки
qwm вне форума   Ответить с цитированием
Старый 10.05.2012, 16:37   #10
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Да DosBox самое простое решение проблемы в таком случае.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:36.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!