2016-11-27 8 views
0

私はC++でいくつかのコードを書いて、1つのグラフに2つのプロットを表示しています。 1つの関数はsin関数でなければならず、もう1つの関数はcos関数である必要があります。C++でsin/cosグラフを作成する

sinグラフとcosグラフに必要なコードがありますが、一緒に表示することはできません。

#include <cmath> 
#include <iostream> 
#include <cstdlib> 

using namespace std; 
const float PI = 3.1459265; 
int main() 
{ 
    int size = 80, height = 21; 
    char chart[height][size]; 
    size = 80, height = 21; 
    double cosx[size]; 
    double sinx[size]; 

    { 
     for (int i=0; i<size; i++) 
      cosx[i] = 10*cos(i/4.5); 

     for (int i=0; i<height; i++) 
      for (int j=0; j<size; j++) 
       if (-.01 < 10 - i - round(cosx[j]) && 10 - i - round(cosx[j]) <0.01) 
        chart[i][j] = 'x'; 
       else if (i==height/2) 
        chart[i][j] = '-'; 
       else 
        chart[i][j] = ' '; 

     for (int i=0; i<height; i++) 
      for (int j=0; j<size; j++) 
       cout << chart[i][j]; 

     for (int i=0; i<size; i++) 
      sinx[i] = 10*sin(i/4.5); 

     for (int i=0; i<height; i++) 
      for (int j=0; j<size; j++) 

     if (-.01 < 10 - i - round(sinx[j]) && 10 - i - round(sinx[j]) <0.01) 
      chart[i][j] = 'x'; 
     else if (i==height/2) 
      chart[i][j] = '-'; 
     else 
      chart[i][j] = ' '; 

     for (int i=0; i<height; i++) 
      for (int j=0; j<size; j++) 
       cout << chart[i][j]; 
    } 
} 
+0

図表ライブラリはありますか?コンソールに出力しようとしているようです。 –

+1

gnuplot http://gnuplot.sourceforge.net/demo_5.0/simple.htmlやmatplotlib http://matplotlib.org/examples/animation/を見てみるとよいでしょう。 basic_example.html – moof2k

+0

コードを書式化しようとしましたが、インデントが正しくない場合は編集を確認する必要があります。必ずしも必要というわけではありませんが、読みやすさを助け、将来の編集を容易にするために、コードブロックの周囲に中括弧 '{..} 'を使用するとよいでしょう。 – Tony

答えて

0

グラフの各行の後に改行を印刷しません。そして、それは私の作品

​​

for (int i=0; i<height; i++) 
    for (int j=0; j<size; j++) 
     cout << chart[i][j]; 

を交換してください。

しかし、これはやや複雑なやり方のようです。それが私の場合は、スキャンするのではなく関数の値からx-esの座標を計算し、関数の値に近い場合は各座標をチェックします。例:

#include <cmath> 
#include <iostream> 
#include <string> 
#include <vector> 

int main() 
{ 
    int size = 80, height = 21; 

    // Start with an empty chart (lots of spaces and a line in the middle) 
    std::vector<std::string> chart(height, std::string(size, ' ')); 
    chart[height/2] = std::string(size, '-'); 

    // Then just put x-es where the function should be plotted 
    for(int i = 0; i < size; ++i) { 
    chart[static_cast<int>(std::round(10 * std::cos(i/4.5) + 10))][i] = 'x'; 
    } 

    // and print the whole shebang 
    for(auto &&s : chart) { 
    std::cout << s << '\n'; 
    } 
} 
関連する問題