#include <iostream>
using namespace std;
#define CHANGE 0.5
#define YMAX (yourterminallength/(2*(1/CHANGE)))
#define YMIN (-yourterminallength/(2*(1/CHANGE)))
#define XMAX (yourterminalwidth/(2*(1/CHANGE)))
#define XMIN (-yourterminalwidth/(2*(1/CHANGE)))
int main()
{
float m,b,y,x,c;
cout << "Intervals:" << CHANGE << " \tYMAX: " << YMAX << "\tYMIN: " << YMIN << "\tXMAX: " << XMAX << "\tXMIN: " << XMIN;
cout << "\nEnter any key to continue...";
cout << "nEnter a linear equation in slope-intercept form: y = Mx + B";
cout << "\nM=";
cin >> m;
cout << "B=";
cin >> b;
c=YMAX;
while(c>YMIN)
{
x=XMIN;
while(x<XMAX)
{
if(c==0)
{
if(x==0)
cout << char(197);
else
cout << char(196);
}
else if(x==0)
cout << char(179);
else if((m*x+b)==c)
cout << char(254);
else
cout << char(176);
x+=CHANGE;
}
c-=CHANGE;
}
return 0;
}
该程序旨在绘制简单的线性方程。它在我的Windows计算机上运行良好,我只是在我的Ubuntu操作系统上制作了它的副本,但结果看起来很有趣。我知道我没有提供太多信息,但我不知道这有什么问题。
答案 0 :(得分:0)
首先,您可以使用环境变量来获取终端的COLUMNS / LINES。
否则,请确保添加换行符,因为终端模拟器现在不再进行换行(?)。
现在,真正的问题似乎是使用float
比较。
像
这样的行if (c==0)
或
else if((m*x+b)==c)
由于不精确的浮动表示,几乎完全未定义。
最后,您的示例出现(?)以假定ASCII或带有块图形字符的代码页。这些将无法在支持UTF8的终端上打印出来。只需用更合适的字符替换字符即可。
y
在代码中未使用。 c
似乎加倍了它的含义?