zoukankan      html  css  js  c++  java
  • 控制台绘制正弦/余弦曲线

    余弦曲线

    当然了,这里我们不用数组……否则就没技术含量了。

    正弦曲线的特点是左右对称,且左边部分的纵坐标是从1一直降到-1的,相应的右边的纵坐标是从-1一直递增到1。难点在于显示器只能按行输出,也就是说输出了一行后不能再掉头输出上一行的信息。

    我们自定义一个缩放系数a为10,用acos(-1)*10可以算得等于31,因此总宽度为62,起点的横坐标为0,终点的横坐标为61。因为余弦曲线对称,所以在0~180度,也就是左边部分时,横坐标为k时对应的相同纵坐标的180~360度,也就是右边部分的横坐标为(62-k)。

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double y;
        int x,k;
        for(y=1;y>=-1;y-=0.1)
        {
            k=acos(y)*10;
            for(x=1;x<k;x++)
                printf(" ");
            printf("*");
            for(;x<62-k;x++)
                printf(" ");
            printf("*
    ");
        }
        return 0;
    }

    这里写图片描述

    正弦曲线

    正弦曲线就要难得多了……我们依旧沿用余弦曲线示例中的总宽度(62)。

    相信对于左边部分大家都可以信手拈来……

            if(1<=k&&k<=15)
            {
                for(x=1;x<k;x++)
                    printf(" ");
                printf("*");
    
                for(;x<30-k;x++)
                    printf(" ");
                printf("*
    ");
            }

    右边部分我也弄了好久,主要是忽略了asin(-1)*10是负数……哎

    所以发现了这一点之后就应该将if语句这样写:

    if(-15<=k&&k<=-1)

    但是还有一点要注意的,我们不是在用数组打印星号,换句话说,对于横坐标而言,打印都得从1开始,而我们的坐标成了负值,该怎么办呢?

    我们应该转换它:将负数k变成(31-k)它就成了一个合理的正数了,同样的,在270度的左右90之间也是对称的。而270度对应的宽度为46,那么180~270度之间的k对称到270~360度之间的多少呢?设一个方程就搞定了:

    46-(31- k)= x - 46
    =>
    x = 61 + k

    于是乎:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double y;
        int x,k;
        for(y=1;y>=-1;y-=0.1)
        {
            k=asin(y)*10;
    
            if(1<=k&&k<=15)
            {
                for(x=1;x<k;x++)
                    printf(" ");
                printf("*");
    
                for(;x<30-k;x++)
                    printf(" ");
                printf("*
    ");
            }
            else if(-15<=k&&k<=-1)
            {
                for(x=1;x<31-k;x++)
                    printf(" ");
                printf("*");
    
                for(x;x<61+k;x++)
                    printf(" ");
                printf("*
    ");
            }
        }
        return 0;
    }

    这里写图片描述

    源码

    【源码下载,不需要资源积分】

    还有下一篇哦:控制台绘制正弦曲线和余弦曲线同时显示



    为使本文得到斧正和提问,转载请注明出处:
    http://blog.csdn.net/nomasp

  • 相关阅读:
    angular的路由例子
    angular自定义module
    docker配置phpadmin需要注意的地方
    linux下钉钉,微信
    debian shell脚本关联
    debian下安装带界面的qemu
    ros的一些设置
    新闻排重方案设计
    细解动态规划(一)
    漫画谈-微积分(二)
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4483254.html
Copyright © 2011-2022 走看看