C++第12周项目6扩展——三角函数表

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565【项目6扩展(选做)-编制三角函数表】  要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将项目6中的

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目6扩展(选做)-编制三角函数表】

  要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将项目6中的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);
	//show_sin_table(135, 180);  //程序在显示这部分时进入了死循环,原因待查
	return 0;
}
//下面定义show_sin_table()函数
void show_sin_table(int iFromAngle, int iToAngle)
{
	int x,count=0;
	cout<<"由"<<iFromAngle<<"°到"<<iToAngle<<"°的三角函数表: "<<endl;
    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);
		cout<<mysin(x*pi/180); 
        if (count%3==2)cout<<"\n";
		++count;
	} 
	cout<<"\n";   
	return;
}

//下面定义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月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
113 1
|
1月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
106 7
|
1月前
|
算法 数据处理 C++
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
217 1
|
13天前
|
存储 C++
C++的list-map链表与映射表
这篇教程介绍了C++中`list`链表和`map`映射表的基本使用。`list`链表可通过`push_front()`、`push_back()`、`pop_front()`和`pop_back()`进行元素的添加和删除,使用迭代器遍历并支持在任意位置插入或删除元素。`map`是一个键值对的集合,元素自动按键值排序,可使用下标操作符或`insert()`函数插入元素,通过迭代器遍历并修改键值对,同时提供`count()`方法统计键值出现次数。教程中包含多个示例代码以帮助理解和学习。
15 2
|
11天前
|
程序员 C语言 C++
【C++语言】继承:类特性的扩展,重要的类复用!
【C++语言】继承:类特性的扩展,重要的类复用!
|
1月前
|
存储 C++ UED
【C++】飞机大战项目记录
通过上面的设计,我们实现来看飞机大战的主要功能
51 4
|
1月前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
26 0
【C++】string学习 — 手搓string类项目
|
1月前
|
C++
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
|
1月前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
|
1月前
|
算法 测试技术 数据处理
【C++ 设计思路】优化C++项目:高效解耦库接口的实战指南
【C++ 设计思路】优化C++项目:高效解耦库接口的实战指南
94 5