用acos(x)繪制余弦曲線


1. 用acos(x)繪制余弦曲線
在屏幕上用“*”顯示0°~360°的余弦函數cos(x)曲線。
* 問題分析與算法設計

如果在程序中使用數組,這個問題十分簡單。但若規定不能使用數組,問題就變得不容易了。
關鍵在於余弦曲線在0°~360°的區間內,一行中要顯示兩個點;而對一般的顯示器來說,只能按行輸出,即:輸出第一行信息后,只能向下一行輸出不能再返回上一行。為了獲得本題要求的圖形就必須在一行中一次順序輸出兩個“*”。
為了同時得到余弦函數cos(x)圖形在一行上的兩個點,考慮利用cos(x)的左右對稱性。將屏幕的行方向定義為x,列方向定義為y,則0°~180°的圖形與180°~360°的圖形是左右對稱的。若定義圖形的總寬度為62列,計算出x行0°~180°時y點的坐標m,那么在同一行與之對稱的180°~360°的y點的坐標就應為62-m。程序中利用反余弦函數acos計算坐標(x,y)的對應關系。

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double y;
    int x,m;
    for(y=1;y>=-1;y-=0.1)
    {
        m=acos(y)*10;
        for(x=1;x<m;x++) cout <<" ";
            cout <<"*";
        for(;x<62-m;x++) cout <<" ";
            cout <<"*";
            cout <<endl;
    }
    return 0;
}

 

2.用數組實現繪制余弦曲線
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
// 數組實現:假設屏幕為21*62定義一個數組,全部歸0,然后算,該有點的地方表為1,然后輸出
    double y;
    int i,j,m;
    int x=0;
    int flag[21][62]={0};
    for(y=1;y>=-1;y-=0.1)
    {
        m=acos(y)*10;
        flag[x][m]=1;
        flag[x][61-m]=1;
        x++;
    }
// 遍歷每行
    for(i=0;i<21;i++)
    {
        for(j=0;j<62;j++)
        {
            if(flag[i][j]==1)
                cout <<"*";
            else
                cout <<" ";
        }
        cout <<endl;
    }
    return 0;
}


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com