Board logo

标题: 批处理脚本实现C语言趣味编程百例002:余弦曲线和直线 [打印本页]

作者: HAT    时间: 2012-2-28 21:46     标题: 批处理脚本实现C语言趣味编程百例002:余弦曲线和直线

要求用BAT脚本实现:在屏幕上用星号(也就是*)显示余弦曲线和直线

加分:1个技术分或者10个PB

*问题分析与算法设计
本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。

*程序注释与说明
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. double y;
  6. int x,m,n,yy;
  7. for(yy=0;yy<=20;yy++) /*对于第一个y坐标进行计算并在一行中打印图形*/
  8. {
  9. y=0.1*yy; /*y:屏幕行方向坐标*/
  10. m=acos(1-y)*10; /*m: cos(x)曲线上y点对应的屏幕列坐标*/
  11. n=45*(y-1)+31; /*n: 直线上y点对应的列坐标*/
  12. for(x=0;x<=62;x++) /*x: 屏幕列方向坐标*/
  13. if(x==m&&x==n) printf("+"); /*直线与cos(x)相交时打印“+”*/
  14. else if(x==n) printf("+"); /*打印不相交时的直线图形*/
  15. else if(x==m||x==62-m) printf("*"); /*打印不相交时的cos(x)图形*/
  16. else printf(" "); /*其它情况打印空格*/
  17. printf("\n");
  18. }
  19. return 0;
  20. }
复制代码
*思考题
如何实现sin(x)曲线与cos(x)曲线图形的同时显示。
作者: plp626    时间: 2012-3-5 14:47

本帖最后由 plp626 于 2012-3-5 14:56 编辑

思路,批处理不支持浮点运算,先转换为整数运算,2*pi-->63; cmd窗口高20;宽暂定为70(63<70)

令0<x<63
Y=SIN(x)=10*sin(1/10*x)
用3次曲线拟合出0<x<16(x为整数)段的y;然后计算出对应的y值,再根据对称性算出0<x<63的y值;
再输出点(x,y);

对于COS(x)=SIN(pi/2-x)由对称性同理;要同时输出在start/b开一个进程输出。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2