2013-12-21 63 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-floatingpoint-values – sehe