Проблемы с графической программой

0
#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, но результат выглядит забавным. Я знаю, что я не даю много информации, но я понятия не имею, что с этим не так.

Теги:
graphing

1 ответ

0
  1. Во-первых, вы можете использовать переменные среды для получения COLUMNS/LINES вашего терминала.

    В противном случае убедитесь, что вы добавляете новые строки, потому что терминальные эмуляторы обычно не делают перенос строк в эти дни (?).

  2. Теперь реальная проблема заключается в использовании сравнений с float.

    Линия, подобная

    if (c==0)
    

    или

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

    полностью не определены из-за неточных представлений с плавающей точкой.

  3. Наконец, ваш образец появляется (?), Чтобы предположить ASCII или кодовую страницу с символами рисования блоков. Они не будут хорошо печататься на терминале с поддержкой UTF8. Просто замените персонажей более подходящими.

  4. y не используется в коде. c кажется, удваивает значение?

  • 0
    спасибо за помощь!
  • 0
    Вот справочная информация о сравнениях с плавающей запятой: stackoverflow.com/questions/10334688/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню