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

ответ

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

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

  2. Настоящая проблема представляет собой сравнение float.

    линия, как

    if (c==0) 
    

    или

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

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

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

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

+0

спасибо, что вам помогли! – JayKay

+0

- вот ссылка на сравнения с плавающей запятой: http://stackoverflow.com/questions/10334688/how-dangerous-is-it-to-compare-floating-point-values – sehe