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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2011, 23:55   #1
vibe
 
Регистрация: 21.12.2010
Сообщений: 7
По умолчанию График функции. Pascal.

привет! нужно построить график функции y= -22/(x+5). у меня программа строит одну ветвь гиперболы или другую, но не две вместе! например, если задать интервал значений от -10 до -6, то построит верхнюю ветвь, а если от -4 до 5, то нижнюю. а вот если от -10 до 5 , то получается кракозябра какая-то( что там доделать не пойму. помогите, пожалуйста! полный код программы: http://codepad.org/oey2tfov

Код:
{Инициализация графики}
  setbkcolor(15);
  if logMinX=-5 then logX:=logMinX+TabStep
  else logX:=logMinX;
  oldX:=round(monMinX+((monMaxX-monMinX)*(logX-logMinX))/(logMaxX-logMinX));
  logY:=y(logX);
  oldY:=round(monMaxY-((monMaxY-monMinY)*(logY-logMinY))/(logMaxY-logMinY));
 
  {Построение графика}
 
    while logX<=logMaxX do
    begin
    if logX<>-5 then
     begin
      logY:=y(logX);
      monX:=round(monMinX+((monMaxX-monMinX)*(logX-logMinX))/(logMaxX-logMinX));
      monY:=round(monMaxY-((monMaxY-monMinY)*(logY-logMinY))/(logMaxY-logMinY));
      setcolor(2);
      circle(monX,monY,1);
      setcolor(1);
      line(oldX,oldY,monX,monY);
      {вывод в файл}
      writeln(f,logX:6:3,'    ',logY:6:3);
     end;
    {переход к следующей итерации}
    logX:=logX+TabStep;
    oldX:=monX;
    oldY:=monY;
    end;

Последний раз редактировалось vibe; 17.07.2011 в 00:56.
vibe вне форума Ответить с цитированием
Старый 17.07.2011, 00:22   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
if logX<>-5 then
так вещественные числа не сравнивают. Из-за потери точности такое сравнение скорей-всего всегда будет равно False. В результате ваши logMinY и logMaxY вылетают в минус и плюс бесконечности. Весь код не смотрел, но попробуйте подобные проверки делать примерно так:

Код:
if (logX < -5.01) or (logX > -4.99) then
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 17.07.2011 в 00:25.
veniside вне форума Ответить с цитированием
Старый 17.07.2011, 00:52   #3
vibe
 
Регистрация: 21.12.2010
Сообщений: 7
По умолчанию

вот что получается..:
Изображения
Тип файла: jpg график.jpg (35.0 Кб, 134 просмотров)
vibe вне форума Ответить с цитированием
Старый 17.07.2011, 01:01   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну, красота, почти как у вольфрама. Осталось убрать эту линию из плюс бесконечности в минус бесконечность и будет всё ОК.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.07.2011, 01:18   #5
vibe
 
Регистрация: 21.12.2010
Сообщений: 7
По умолчанию

не очень представляю как это сделать..
и ещё этот график более менее строится если шаг табуляции 0.3 или 0.4. в остальных случаях нет
vibe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График функции balamut Общие вопросы .NET 18 22.04.2016 11:11
График функции _-Re@l-_ Общие вопросы Delphi 5 16.04.2011 17:10
График функции dsf Общие вопросы C/C++ 4 17.12.2009 23:20
График функции. Bilargo Помощь студентам 0 09.11.2009 18:57