2008年12月16日星期二

绘制余弦曲线和直线[趣味编程百例]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

   
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用"*"表示,f(x)用"+"表示,在两个图形相交的点上则用f(x)图形的符号。
*问题分析与算法设计
   
本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。
*程序注释与说明
#include<stdio.h>
#include<math.h>  
void main()
{
    double y;
    int x,m,n,yy;
    for(yy=0;yy<=20;yy++) /*对于第一个y坐标进行计算并在一行中打印图形*/
    {
       
y=0.1*yy;                      
/*y:屏幕行方向坐标*/
       
m=acos(1-y)*10;       /*m:
cos(x)曲线上y点对应的屏幕列坐标*/
       
n=45*(y-1)+31;        /*n:
直线上y点对应的列坐标*/
       
for(x=0;x<=62;x++)             
/*x: 屏幕列方向坐标*/
           
if(x==m&&x==n) printf("+");  /*直线与cos(x)相交时打印"+"*/
            else
if(x==n) printf("+");   /*打印不相交时的直线图形*/
            else
if(x==m||x==62-m) printf("*");  /*打印不相交时的cos(x)图形*/
            else 
printf("
");                 
/*其它情况打印空格*/
        printf("\n");
    }
}
*运行结果
*思考题
    如何实现sin(x)曲线与cos(x)曲线图形的同时显示。

- --
马利
richard.ma

My PGP Pulic Key:
http://keyserver.pgp.com

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFJR4Sn2mVtRsgDCtsRAtZHAJ9bOwY4rUQDh2D6qcxw9xD/GRzyPwCcCkao
Be54Ko4qINBAXYJAO4tIIkw=
=GzV+
-----END PGP SIGNATURE-----


没有评论:

发表评论