绘图程序的问题

Problems with graphing program

本文关键字:问题 程序 绘图      更新时间:2023-10-16
#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操作系统上运行,但结果看起来很有趣。我知道我没有提供太多信息,但我不知道这有什么问题。

  1. 首先,您可以使用环境变量来获取终端的列/行。

    否则,请确保添加换行符,因为终端模拟器现在通常不再进行换行(?

  2. 现在,真正的问题似乎是使用float比较。

    像这样的一行

    if (c==0)
    

    else if((m*x+b)==c)
    

    由于浮点数表示不精确,几乎完全未定义。

  3. 最后,您的示例显示 (?) 假定为 ASCII 或具有块绘图字符的代码页。这些在启用 UTF8 的终端上无法很好地打印。只需用更合适的字符替换字符即可。

  4. 代码中未使用yc似乎加倍了它的意义?