天天看點

第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度的正弦值。為取得更好的效果,可以考慮像英尺到米的轉換一樣,以速查表格的形式給出結果。

實驗目的:學會使用自定義函數解決實際問題,學會函數的嵌套調用

實驗内容:編制一個三角函數表

/* 程式頭部注釋開始
* 程式的版權和版本聲明部分
* 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);
}           

運作結果:

第13周報告3:編制一個三角函數表

經驗積累:

1. 有了任務2,這個任務不難完成

2. 嵌套調用函數,真不錯。這是在編制大程式時常用的手段。

上機感言:

繼續閱讀