我正在用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 :(得分:0)
您不会在图表的每一行后打印换行符。替换
for (int i=0; i<height; i++)
for (int j=0; j<size; j++)
cout << chart[i][j];
与
for (int i=0; i<height; i++) {
for (int j=0; j<size; j++) {
cout << chart[i][j];
}
cout << '\n';
}
然后它适合我。
然而,这似乎是一种有点令人费解的方式。如果是我,我会从函数值计算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';
}
}