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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2017, 20:04   #1
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию Помогите разобраться в коде

у меня есть код,строящий график функций
Код:
procedure TForm2.GrClick(Sender: TObject);
function f(x:real): real;
Var
  c : real;
Begin
    c :=(2*x-1)/(sqr(x-1));
    f:=c;
end;
Var
  a,b,x : real;
  x0,y0,i : integer;
  flag:boolean;
Begin
  flag:=true;
  x0 := line1.Width div 2;
  y0 := line1.Height div 2;
  With line1.Canvas do
    Begin
      Pen.Color:=clBlack;
      MoveTo(x0,0);
      LineTo(x0,line1.ClientHeight);
      MoveTo(0,y0);
      LineTo(line1.ClientWidth,y0);
      MoveTo(0,y0);
      Pen.Color := clBlue;
      a :=-line1.ClientHeight div 5;
      b :=-line1.ClientWidth div 15;
      x :=-10;
      For i:=-100 to 100 do
        Begin
          x:=x+0.1;
          if (not((x<-0.99) and (x>-1.01))) then begin
            if(flag=true) then begin
              MoveTo(Trunc(x0+x*b),Trunc(y0+f(-x)*a));
              flag:=false;
            end;
            LineTo(Trunc(x0+x*b),Trunc(y0+f(-x)*a));
          end;
        End;
    End;
End;
 
 
 
procedure TForm2.line1Click(Sender: TObject);
begin
 
end;
 
procedure TForm2.ExitClick(Sender: TObject);
begin
  close;
end;
 
end.
помогите понять почему вместо
Код:
(not((x<-0.99) and (x>-1.01)))
я не могу поставить просто -1(он крашится при -1 и работает при диапазоне)?
perekatipole вне форума Ответить с цитированием
Старый 20.04.2017, 20:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А что хотел? На ноль делить нельзя, даже в программе ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.04.2017, 20:55   #3
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что хотел? На ноль делить нельзя, даже в программе ))
я знаю что на 0 делить нельзя,но почему именно диапазон берем ,а не просто -1?
perekatipole вне форума Ответить с цитированием
Старый 20.04.2017, 21:03   #4
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию

можно по другому написать как-нибудь код чтобы на 0 не делил?
perekatipole вне форума Ответить с цитированием
Старый 20.04.2017, 21:13   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

А почему вас волнует минус 1, ведь sqr(x-1)=0 при x=плюс 1.

в цикле:
Код:
if x<>1 then ...
или
Код:
if x=1 then Continue;

Последний раз редактировалось type_Oleg; 20.04.2017 в 21:19.
type_Oleg вне форума Ответить с цитированием
Старый 20.04.2017, 21:15   #6
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
А почему вас волнует минус 1, ведь sqr(x-1)=0 при x=плюс 1.
он меняет значения на противоположные,волнует потому что я не могу сдать эту задачу учителю из-за того,что не могу ответить на этот вопрос
perekatipole вне форума Ответить с цитированием
Старый 20.04.2017, 21:24   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Код:
uses Math;
Код:
function f(x:real): real;
Var
  c : real;
Begin
 c:=x-1;
 if c<=0 
  then f:=NaN 
  else f:=(2*x-1)/(sqr(c));
end;
Потом еще надо в цикле проверять isNaN
type_Oleg вне форума Ответить с цитированием
Старый 20.04.2017, 21:30   #8
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Код:
uses Math;
Код:
function f(x:real): real;
Var
  c : real;
Begin
 c:=x-1;
 if c<=0 
  then f:=NaN 
  else f:=(2*x-1)/(sqr(c));
end;
Потом еще надо в цикле проверять isNaN
не,мне не надо никакие цифры подставлять,он просто должен построить заданый график
perekatipole вне форума Ответить с цитированием
Старый 20.04.2017, 21:34   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Цитата:
Сообщение от perekatipole Посмотреть сообщение
не надо никакие цифры подставлять,он просто должен построить заданый график
Да, пожалуйста, стройте график .. без цифр.
type_Oleg вне форума Ответить с цитированием
Старый 20.04.2017, 21:40   #10
perekatipole
 
Регистрация: 20.04.2017
Сообщений: 9
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Да, пожалуйста, стройте график .. без цифр.
что вместо NaN подставить?
perekatipole вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться в коде... dimwow Паскаль, Turbo Pascal, PascalABC.NET 3 28.09.2016 08:43
Помогите разобраться в коде p0keT Win Api 1 12.12.2014 13:56
Помогите разобраться в коде fate Общие вопросы по Java, Java SE, Kotlin 5 17.03.2009 22:10