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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 15:39   #1
Vova_P
 
Регистрация: 07.11.2011
Сообщений: 4
Счастье GraphABC + процедуры и функции (PascalABC.NET)

Здравствуйте! Хотел бы попросить помощи в доработке программы. Основа есть но выдает ошибку времени выполнения. Заранее спасибо.

Вот сама программа.Необходимо построить два графика на одном экране учитывая область определения и разрывы функций.

Код:
program sub_8;

uses
  GraphABC;

var
  a, b: real;
  n: integer;

function F(x: real): real;
begin
  F := sin(x) / cos(x) + 1 / sqrt(x * x - 9)
end;

function G(x: real): real;
begin
  G := exp(sqrt(x)) + Ln(x)
end;

procedure MaxMin(a, b, h: real; var yMin, yMax: real);
var
  x, y, a1, b1, b2, b3: real;
begin
  if a < -3 then
  begin
    yMin := F(a1);yMax := yMin;x := a1;
    while x < b1 + h / 2 do
    begin
      y := F(x);
      if y < yMin then
        yMin := y;
      if y > yMax then
        yMax := y;
      x := x + h;
    end;
  end;
  if b2 > 3 then
  begin
    while x < b2 + h / 2 do
    begin
      y := F(x);
      if y < yMin then
        yMin := y;
      if y > yMax then
        yMax := y;
      x := x + h;
    end;
  end;
  if b3 > 0 then
  begin
    while x < b3 + h / 2 do
      y := G(x);
    if y < yMin then
      yMin := y;
    if y > yMax then
      yMax := y;
    x := x + h;
  end;
  
end;


procedure GrFunc(a, b: real; n: integer);
var
  yMin, yMax: real;
  x, y, h, Mx, My: real;
  xe, ye, xep, yep, ox, oy,
  xemin, yemin, xemax, yemax, i, xemin1, yemin1, xep2, xe2, yep2, ye2: integer;
  function prx(x: real): integer;
  begin
    prx := round(xemin + (x - a) * Mx)
  end;
  
  function pry(y: real): integer;
  begin
    pry := round(yemin + (yMax - y) * My)
  end;



begin
  h := (b - a) / n; MaxMin(a, b, h, yMin, yMax);
  xemin := 20; xemax := WindowWidth - 20;
  yemin := 20; yemax := WindowHeight - 20;
  Mx := (xemax - xemin) / (b - a);
  My := (yemax - yemin) / (ymax - ymin);
  x := a; y := f(a);
  xep := prx(x); yep := pry(y);
  yep2 := pry(G(x));xep2 := prx(x);
  pen.Color := clGreen;
  for i := 1 to n do
  begin
    x := x + h; y := f(x);
    xe := prx(x);ye := pry(y);
    line(xep, yep, xe, ye);
    xep := xe; yep := ye;
    line(xep2, yep2, xe2, ye2);
    xep2 := xe2;yep2 := ye2;
  end;
  
      {выводятся оси}
  if yMin * yMax < 0 then
  begin
    oy := pry(0);pen.Color := clBlack;
    Line(xemin, oy, xemax, oy);
    TextOut(xemax - 15, oy + 10, 'Ox');
  end;
  if a * b < 0 then
  begin
    ox := prx(0);
    Line(ox, yemin, ox, yemax);
    TextOut(ox + 10, yemin + 15, 'Oy');
  end;
  {================================}
  xemin1 := xemin; yemin1 := yemin;
  pen.Color := ClGray; pen.Style := psDot;
  while xemin <= (xemax + round(ox / 15)) do
  begin
    line(xemin, yemin1, xemin, yemax);
    xemin := xemin + round(ox / 15);
  end;
  
  while yemin <= (yemax + round(oy / 15)) do
  begin
    line(xemin1, yemin, xemax, yemin);
    yemin := yemin + round(oy / 15);
  end;
  {=================================}
  var q, w, e, r: string;
  str(a, q);
  textout(xemin1, oy - 10, q );
  str(b, w);
  textout(xemax, oy - 10, w);
  yMax := round(yMax);
  str(yMax, e);
  textout(ox - 15, yemin1 + 5, e);
  yMin := round(yMin);
  str(yMin, r);
  textout(ox - 15, yemax - 10, r);
end;

begin
  n := 1000;
  write('Введите концы отрезка а..b');
  readln(a, b);
  GrFunc(a, b, n)
end.
Vova_P вне форума Ответить с цитированием
Старый 11.12.2011, 18:33   #2
Vova_P
 
Регистрация: 07.11.2011
Сообщений: 4
По умолчанию

Прошу не пугаться размеров,там большое ОДЗ просто
Vova_P вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC.NET v1ktor Паскаль, Turbo Pascal, PascalABC.NET 0 21.06.2011 13:58
Цикл FOR в PascalABC.NET Bizunov Паскаль, Turbo Pascal, PascalABC.NET 7 18.04.2011 20:55
PascalABC.net gogomon93 Помощь студентам 5 17.04.2011 18:48
PascalABC.net *stRong* Помощь студентам 2 10.06.2010 17:50
Графика PascalABC.NET Ученик. Помощь студентам 6 04.02.2010 15:24