Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 日志(x)域错误C++;建设者_C++_Math_Graph_C++builder_Logarithm - Fatal编程技术网

C++ 日志(x)域错误C++;建设者

C++ 日志(x)域错误C++;建设者,c++,math,graph,c++builder,logarithm,C++,Math,Graph,C++builder,Logarithm,我必须用log(x)函数构建图形,但生成器显示错误“DOMAIN error”。 我认为这是因为日志不能包含x,但我不知道如何修复它 ...... int x0, y0 ,mash_x, mash_y; float f(float x); float f(float x) { return log10(x) + 3; } //----------------------------------------------------------------------------

我必须用log(x)函数构建图形,但生成器显示错误“DOMAIN error”。 我认为这是因为日志不能包含x,但我不知道如何修复它

......
int x0, y0 ,mash_x, mash_y;
float f(float x);
float f(float x)
{
        return log10(x) + 3;

}
//----------------------------------------------------------------------------
 int xk(float mx)//komp
  {
   return floor(x0+mx*mash_x);
  }
//----------------------------------------------------------------------------

   int yk(float my)//komp
  {
   return floor(y0-my*mash_y);
  }
//----------------------------------------------------------------------------

 void drawgraf(float xmin,float xmax)
 {
   float x, y;
   int XK, YK;
   x = xmin;
   y = f(x);
   XK = xk(x);
   YK = yk(y);
   Form1->Image1->Canvas->Pen->Color = clRed ;
   Form1->Image1->Canvas->MoveTo(XK,YK);
   while(x<=xmax)
    {
      x = x+0.01;
      y = f(x);
      XK = xk(x);
      YK = yk(y);
      Form1->Image1->Canvas->LineTo(XK,YK);
    }
如何创建log10(x)+3而不出现“域错误”;
谢天谢地

使用
log10f()
,而不是
log10()
。并确保x是正数,例如,
if(x>0.0)返回log10f(x)+3.0;else/*错误处理*/。此外,有意义的函数和变量名将提高代码的可读性。谢谢@squemishossifrage
float f(float x)
    {
            return log10(x) + 3;

    }