控制台绘制正弦/余弦曲线
2015-09-08 00:00
330 查看
余弦曲线
当然了,这里我们不用数组……否则就没技术含量了。正弦曲线的特点是左右对称,且左边部分的纵坐标是从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("*\n"); } return 0; }
正弦曲线
正弦曲线就要难得多了……我们依旧沿用余弦曲线示例中的总宽度(62)。相信对于左边部分大家都可以信手拈来……
if(1<=k&&k<=15) { for(x=1;x<k;x++) printf(" "); printf("*"); for(;x<30-k;x++) printf(" "); printf("*\n"); }
右边部分我也弄了好久,主要是忽略了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("*\n"); } else if(-15<=k&&k<=-1) { for(x=1;x<31-k;x++) printf(" "); printf("*"); for(x;x<61+k;x++) printf(" "); printf("*\n"); } } return 0; }
源码
【源码下载,不需要资源积分】还有下一篇哦:控制台绘制正弦曲线和余弦曲线同时显示
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp
相关文章推荐
- IE:如何做到全屏显示
- 修改注册表实现在桌面上显示Windows版本
- Attrib 显示、设置或删除指派给文件或目录的只读、存档、系统以及隐藏属性
- VB的TextBox文本框实现垂直居中显示的方法
- C#实现获取系统目录并以Tree树叉显示的方法
- bat脚本显示本机IP地址的两种方法(内网ip)
- 图象函数中的中文显示
- 桌面中心(四)数据显示
- 用ODBC的分页显示
- 显示、隐藏密码
- javascript实现点击后变换按钮显示文字的方法
- JS动态显示表格上下frame的方法
- select 控制网页内容隐藏于显示的实现代码
- js实现input框文字动态变换显示效果
- jQuery实现高亮显示的方法
- jQuery仿淘宝网产品品牌隐藏与显示效果
- Javascript显示和隐藏ul列表的方法
- ASP.NET实现读取Excel内容并在Web上显示
- JavaScript基于Ajax实现不刷新在网页上动态显示文件内容
- 编程之显示/隐式声明