第13周报告3:编制一个三角函数表

简介: 任务3:(函数的嵌套)编制一个三角函数表,要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将任务2中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦

任务3:(函数的嵌套)编制一个三角函数表,要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将任务2中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。为取得更好的效果,可以考虑像英尺到米的转换一样,以速查表格的形式给出结果。

实验目的:学会使用自定义函数解决实际问题,学会函数的嵌套调用
实验内容:编制一个三角函数表

/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: sintable.cpp                           
* 作    者: 贺利坚                           
* 完成日期: 2011 年 11 月 22 日
* 版本 号: v1.0           
 
* 对任务及求解方法的描述部分
* 输入描述:无
* 问题描述:编制一个三角函数表,要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将任务2中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。为取得更好的效果,可以考虑像英尺到米的转换一样,以速查表格的形式给出结果。
* 程序输出:三角函数表
* 程序头部的注释结束(此处也删除了斜杠)
*/
#include <iostream>
#include <iomanip>
using namespace std;
double mysin(double);
double myabs(double);
void show_sin_table(int, int);
const double pi=3.1415926;
int main( )
{
 show_sin_table(0, 90);
 system("PAUSE");
 return 0;
}
//下面定义show_sin_table()函数
void show_sin_table(int iFromAngle, int iToAngle)
{
     int x;
    cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(3);
     for(x=0; x<3;x++)
         cout<<setw(8)<<" 角度x"<<setw(8)<< "  sin(x)";
    cout<<"\n";   
     for(x=iFromAngle;x<=iToAngle; x++)
     {
       cout<<setw(8)<<x<<setw(8)<<mysin(x*pi/180); 
        if (x%3==0)cout<<"\n";          
     }   
}
//下面定义mysin函数
double mysin(double x)
{
   double sum=x,x_pow=x,item;
   int n=1,fact=1,sign=1;     //定义变量时赋初值,已经将第一项考虑到累加和sum中
   do
   {
            fact=fact*(n+1)*(n+2);  //fact用于表示阶乘,在公式中作分母
             x_pow*=x*x;             //x_pow是分子中用于表示阶乘,在公式中作分母
             sign=-sign;             //确定即将要累加的这一项的符号
             item =x_pow/fact*sign; //计算出要累加的项
             sum+=item;              //将该项累加上去
             n+=2;
  }while(myabs(item)>1e-5);
   return sum;
}
//下面定义myabs函数
double myabs(double x)
{
 return ((x>=0)?x:-x);
}

运行结果:

 

经验积累:

1. 有了任务2,这个任务不难完成

2. 嵌套调用函数,真不错。这是在编制大程序时常用的手段。

 

上机感言:

  不少同学感叹,学点东西太不容易了,学得脑子疼。可是想一想,当把一个个难关克服过去之后,是何等的惬意。再想想,这几个月,你的进步有多大!



目录
相关文章
|
7月前
|
监控 项目管理
第八章项目进度管理(选择4分,案例12分)
第八章项目进度管理(选择4分,案例12分)
152 0
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
如何确定两个日期之间的工作日有多少天、计算—年中每周内各日期出现次数、确定当前记录和下一条记录之间相差的天数【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。本章节的三个需求:确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数有些许难度,不过建议还是学会比较好。
【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数
如何写周报告
        在日常工作中,我们每个礼拜在项目上都会有周报需要编写提交,那么我们如何来写周报呢?到底该怎么才能写好周报?       首先我们得明确周报的概念,在周报中我们需要体现什么样的内容给领导。
1191 0
|
存储 C语言 索引
第十一周:结构类型
你会坚持下来的对吗?希望C语言不会成为你跨进编程世界的拦路虎,而是你的启蒙语言,梦的开始
88 0
第12周 上机报告 1之练习3 回文日
题目:很诱人的一个题目:2011年11月02日是一个回文日:2011 1102,我们刚刚度过!请列出近80年和近60年还有多少个回文日(假如我们能活到百岁,你和我的……)。注意:一年只有12个月。 2012年11月30日新发的程序: #include &lt;iostream&gt; using namespace std; int main( ) { int year,month,day
866 3
|
开发框架
加入007的第一周-观察自己
这周的输入很少,所想到的道理都是老生常谈,过去了一周现在到下笔的时候,总是不知道从哪方面开始写。反省自己,为什么过去了一周,自己没什么可写的,自己又做了哪些事情?有没有浪费自己的生命? 不要忘了自己当初为什么出发,匆忙赶路时,不要忘了抬头看路。
|
数据安全/隐私保护 C++
C++第12周项目5.2 ——银行系统函数版
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目5-银行系统】  这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了。  在学习中,总是想要些成就感的。当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么。在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有
1464 0
|
SQL
Sql:請假跨月份問題,或跨年份問題 日期部分边界
---請假跨月份問題,或跨年份問題 日期部分边界 declare @sart datetime,@end datetime,@d int,@s1 datetime,@e1 datetime,@s2 datetime,@e2 datetime,@t varchar(50),@t2 varchar(50),@I int set @sart='2012-11-18 14:56:12' se
1152 0