Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 15:00   #1
uvid_cv
 
Регистрация: 21.04.2012
Сообщений: 3
По умолчанию Графика на Паскале

Код:
Uses Graph,Crt;  {Print – только при наличии принтера для печати графика с экрана на бумагу }
Var
  X,Y,   { текущие значения переменных Х и Y }
  Xmin,Xmax,{минимальное и максимальное значения Х на графике}
  Ymin,Ymax,{минимальное и максимальное значения Y на графике}
  DeltaX,DeltaY,{диапазоны изменения X и Y в пределах рисунка}
  Dx,     { шаг построения графика по Х }
  Dxs,Dys,  { Шаги разметки осей по Х и по Y }
  Part,Pole, { Доля экрана, занятая рисунком и доля чистого поля с каждой стороны }
  Mx,My  {Коэффициенты пересчета Х в J и Y в I}
     : real;
  Imin,Imax, {координаты экрана, соответствующие Ymin и Ymax}
  Jmin,Jmax, {координаты экрана, соответствующие Xmin и Xmax}
  J,I,       {текущие значения переменных координат экрана }
  JAll,IAll, {Максимальные размеры экрана (в пикселях) по X,Y}
  J0,I0, {Координаты на экране точки пересечения осей графика}
  DeltaJ,DeltaI,{Экранные размеры рисунка по Х и Y в пикселях}
  Nx,Ny        {Шаги разметки осей Х и Y в пикселях }
     : integer;
  Riska : String[5]; {Строка для вывода чисел у рисок осей}
  GraphDrv,     {Тип графического драйвера }
  GraphMode: integer;  {Устанавливаемый графический режим}   Code: word;    {Код завершения инициализации графики }
BEGIN { Начало программы }
{1.Задание констант, стандартных значений }
 Xmin:=-4.2; Xmax:=1.0;
 Dxs:=0.5;  Dys:=1.0;
 Part:=0.6; Dx:=0.2;
{2.Ввод исходных данных - в примере не используем}
{3.Печать исходных данных - в примере не используем}
{4.Расчет характеристик функций }
 DeltaX:=Xmax-Xmin;
 Ymin:=(1.5*Xmin+3)/(Xmin-2);
 Ymax:=(1.5*Xmax+3)/(Xmax-2);
 if Ymin>0 then Ymin:=0;
 if Ymax<0 then Ymax:=0;
 DeltaX:=Xmax-Xmin;
 DeltaY:=Ymax-Ymin;
{5.Открытие графики с проверкой правильности срабатыва-ния}
 GraphDrv:=0;   {пусть определяет режим сам }
 InitGraph(GraphDrv,GraphMode,'D:\TP6\BGI');
 Code:=GraphResult;
 if Code<>0 then {если завершение с кодом не 0 - закон-чить программу}
 Begin
 writeln('Ошибка открытия графики с кодом: ',Code);
  Halt; { Останов программы }
 End;
{6.Настройка фона}
 SetBkColor(13); {Фон розовый }
 ClearDevice;  {Очистка экрана}
{7.Расчет параметров графика на экране}
 JAll:=GetMaxX;
 IAll:=GetMaxY;
 Pole:=(1.0-Part)/2.0;
 Jmin:=Round(Pole*JAll);
 Jmax:=Round((1.0-Pole)*JAll);
 Imin:=Round((1.0-Pole)*IAll);  Imax:=Round(Pole*IAll);    { Imin > Imax !!! }
 DeltaJ:=Jmax-Jmin;
 DeltaI:=Imax-Imin;
{8.Расчет масштабных коэффициентов перехода от X к J и от Y к I}
 Mx:=DeltaJ/DeltaX;
 My:=DeltaI/DeltaY;
{9.Построение графика функции}
 {9.1.Задание характеристик линии}
 SetColor(3);  { цвет голубой }
 SetLineStyle(3,0,3); { штриховая толстая }
{9.2.Начальная точка графика}
 Nx:=Round(Dxs*Mx);
 Ny:=Round(Dys*My);  { Шаг разметки по Y - отрицательный }
 J:=Jmin;
 I:= Imin+Round(((1.5*Xmin+3)/(Xmin-2)-Ymin)*My);
 MoveTo (J,I);
{9.3.Цикл расчета экранных координат графика (X->J, X->Y->I) и проведения отрезков}
 X:=0;
 While X<=Xmax do
 Begin
  X:=X+Dx;
  Y:=(1.5*X+3)/(X-2);
  J:=Jmin+Round((X-Xmin)*Mx);
  I:=Imin+Round((Y-Ymin)*My);
  LineTo(J,I);
 End;
{10.Построение осей 10.1.Задание характеристик линии }
 SetColor(13);   { цвет желтый }
 SetLineStyle(0,0,3); { сплошная толстая }
{10.2.Построение осей }
 J0:=Jmin+Round((0-Xmin)*Mx);
 I0:=Imin+Round((0-Ymin)*My);
 Line(J0,Imin,J0,Imax); {Построение оси Y (где X=0)}
 Line(Jmin,I0,Jmax,I0); {Построение оси Х (где Y=0)}
{11.Разметка осей 11.1.Задание характеристик линии }
 SetLineStyle(0,0,0); { сплошная тонкая }
{11.2.Характеристики шрифта для подписи значений }
 SetTextStyle(0,0,0); { шрифт стандартный, подпись горизонтальна }  SetTextJustify(1,2);  {Размещение текста симметрично, относительно заданной точки по горизонтали и ниже точки по вертикали}
{11.3.Цикл проведения разметки оси X, риски вверх от оси, по 10 пикселов }
 J:=J0;  X:=0;
 while J<=Jmax+1 do {от начала координат - вправо }
 begin
  Line(J,I0,J,I0-10);
  Str(X:3:1,Riska);
  OutTextXY(J,I0+5,Riska);
  X:=X+Dxs;
  J:=Jmin+Round((X-Xmin)*Mx);
 end;
 J:=J0;
 X:=0;
 while J>=Jmin do  {от начала координат - влево }
 begin
  Line(J,I0,J,I0-10);
  Str(X:3:1,Riska);
  OutTextXY(J,I0+5,Riska);
  X:=X-Dxs;
  J:=J-Nx;
 end;

Последний раз редактировалось Serge_Bliznykov; 25.04.2012 в 00:05.
uvid_cv вне форума Ответить с цитированием
Старый 24.04.2012, 15:01   #2
uvid_cv
 
Регистрация: 21.04.2012
Сообщений: 3
По умолчанию

Код:
{11.4.Цикл проведения разметки оси Y, риски вправо от оси, по 10 пикселов }
 SetTextJustify(2,1);  {Размещение текста симметрично, относительно заданной точки по вертикали и левее точки по горизонтали }
 I:=I0;
 Y:=0;
 while I>=Imax do {от начала координат - вверх }
 begin
  Line(J0,I,J0+10,I);
  Str(Y:3:1,Riska);
  OutTextXY(J0-10,I,Riska);
  Y:=Y+Dxs;
  I:=I+Ny;
 end;
 { Для данной функции ниже оси Х разметка не нужна}
 I:=I0;
 while I<=Imin do
 begin
  Line(J0,I,J0+10,I);
  I:=I-Ny;
 end;
{12.Подпись графика}
{12.1.Характеристики шрифта, цвет }
 SetColor(1);  { цвет синий }
 SetTextJustify(1,1);  {Размещение текста симметрично, отно-сительно заданной точки по горизонтали и по вертикали}
{12.2.Вывод подписи }
 I:=Round(IAll*(1-Pole/2)); {середина нижнего поля}
OutTextXY(JAll div 2,I,'График функции Y = exp(X)');
{13.Задержка графика на экране }
 while Not KeyPressed do;
{14. Вывод графика на печать (на принтер) - только если он подключен }
 Pr;
 CloseGraph; {14.Закрытие графического режима }
END.

Помогите исправить ошибки!
в)4.Расчет характеристик функций нужно найти минимальное и максимальное значение,с помошья массива из значений y
в)9.3 тоже еще ошибка



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.04.2012 в 00:05.
uvid_cv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в паскале fest123 Паскаль, Turbo Pascal, PascalABC.NET 0 17.01.2011 20:51
Графика в Паскале Денис999 Помощь студентам 1 30.11.2010 21:54
Графика на паскале Dark-cz Помощь студентам 0 13.12.2009 19:24
Графика в паскале modulrev Помощь студентам 16 12.03.2009 10:30