LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 861|回复: 7

抛物线函数绘图

[复制链接]
发表于 2004-6-8 00:55:37 | 显示全部楼层 |阅读模式
函数graph(f, a, b, step),让它在[-1.0, 1.0]区间以step=0.1步进;
画出double f(double x)=x²的图形。


  1. #include <stdio.h>
  2. double f(double);
  3. double graph(double, double, double);
  4. main()
  5. {
  6. double a = -.6, b = .6, step = 0.1;
  7. graph(a, b, step);
  8. return 0;
  9. }

  10. double f(double x)
  11. {
  12. return (x*x);
  13. }

  14. double graph(double x, double y, double step)
  15. {
  16.   double i, k, j;
  17.   for (i = x; i <= y; i = i+step)
  18.       { k=f(i);
  19.       for (j = 0; j <= k; j=j+step/10l)
  20.               printf(" ");
  21.           printf("*\n");
  22.           }
  23. }
复制代码

出来的图形有问题,出现两个y=0;找不到错误:help

  1. [linuxer@mydesktop bmp]$ ./t.o
  2.                                     *
  3.                          *
  4.                  *
  5.           *
  6.      *
  7.   *
  8. [color=red]*
  9. *[/color]
  10.     *
  11.           *
  12.                  *
  13.                          *
  14.                                     *
复制代码
发表于 2004-6-8 01:41:56 | 显示全部楼层
Let me think .....
发表于 2004-6-8 02:45:10 | 显示全部楼层
I changed a little bit in your graph function by splitting original loop into two mini loops:

[PHP]double graph(double x, double y, double step)
{
  double i, k, j;
  for (i = x; i + step < 0; i = i+step)
      { k=f(i);
      for (j = 0; j <= k; j=j+step/10l)
              printf(" ");
          printf("*\n");
          }
  for (i = 0; i <= y; i = i + step)
     { k=f(i);
      for (j = 0; j <= k; j=j+step/10l)
              printf(" ");
          printf("*\n");
          }
}[/PHP]

and it looks correct right now
 楼主| 发表于 2004-6-8 08:19:28 | 显示全部楼层
:thank

and Why?

:help
发表于 2004-6-8 11:49:44 | 显示全部楼层
我想关键的一步就在这里:for (i = x; i + step < 0; i = i+step)
i必须要提前侦测是否下一个x^2到零。我现在在考虑能否将这两个loop合并成一个。想到了再告诉你
发表于 2004-6-8 12:16:00 | 显示全部楼层
而且你的图像也不对, 应该上下两点都在同一个位置, 而你零点后的第一对, 已经没有对齐了, 所以其实你的CODE将>0的整个向前移了一格, 你看看是不是!
 楼主| 发表于 2004-6-8 17:38:03 | 显示全部楼层
对啊. 我也找了很久,没找到哪儿有问题
这使我感到非常困惑:confused:
发表于 2004-6-9 13:27:31 | 显示全部楼层
呵呵,大概是浮点精度的问题,浮点数和0比较
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表