C++扬帆远航——15(项目二,太乐了)

/*
 * Copyright (c) 2016,烟台大学计算机与控制工程学院
 * All rights reserved.
 * 文件名:tailezhanshi.cpp
 * 作者:常轩
 * 微信公众号:Worldhello
 * 完成日期:2016年3月23日
 * 版本号:V1.0
 * 问题描述:运用泰勒展式求出π/2,与56°的正弦值
 * 程序输入:无
 * 程序输出:见运行结果
 */

#include <iostream>  
using namespace std;  
float mysin(float a);
float myabs(float n);
const double pi=3.1415926;
int main()  
{  

	cout<<"sin(π/2)的值为"<<mysin(pi/2)<<endl;
	cout<<"sin(56)的值为"<<mysin((56.0/180.0)*pi)<<endl;
    
    return 0;  
}  

float mysin(float a)
{
	
	float n=0;
	float m;
	int i,j;
	float x=1;
	int ji=1;
	for(i=1;;i++)
	{
       if(i%2!=0)
	   {
         for(j=1;j<=2*i-1;j++)
		 {
			 x=x*a;
			 ji=ji*j;
		 }
		 m=x/ji;
         ji=1;
		 x=1;
	   }
	   else
	   {
         for(j=1;j<=2*i-1;j++)
		 {
			 x=x*a;
			 ji=ji*j;
		 }
		 m=(-1)*x/ji;
         ji=1;
		 x=1;
	   }
	   n=m+n;
	   float t;
	   t=m;
	   if(m<0)
	   t=myabs(m);
	   if(t<0.00001)
	   {  
		   break;
	       
	   }

	}
	return n;
}
float myabs(float n)
{
      n=-n;
	  return n;
}

运行结果:


心得:

       分清程序的层次,每一步该做什么,然后在定义变量的时候注意使用正确的类型,不然会导致最后结果有很小的误差。在做此程序的时候,也不是一口气做完没有Bug。做完之后又进行单步运行,才发现程序中有好多问题,不过最后都改正了


原文地址:https://www.cnblogs.com/chxuan/p/8232267.html