/***************************/ /* 三角形を表示する(1) */ /***************************/ #include #include #include #include char buf[25][80]; // 25x80文字分の配列 void Gen_line(int,int,int,int); // 線分生成 void main( ) { int x1= 5,y1= 0; // 頂点1 int x2=25,y2= 0; // 頂点2 int x3=30,y3=10; // 頂点3 int y; memset(&buf[0][0],' ',25*80); // 配列を空白で初期化 //--線分プロット-- Gen_line(x1,y1,x2,y2); // 線分生成 Gen_line(x2,y2,x3,y3); // 線分生成 Gen_line(x3,y3,x1,y1); // 線分生成 //--表示-- for( y=24; y>=0; y-- ) { printf("%.80s",&buf[y][0]); } // 画面1行表示 fflush(stdout); } void Gen_line( /*------------*/ /* 線分生成 */ /*------------*/ int xS, // 始点 int yS, int xE, // 終点 int yE) { double dx,dy,a=0,b=0; int x,y; buf[yS][xS]='*'; // 始点 buf[yE][xE]='*'; // 終点 if ( xS==xE ) // 垂直線 { if ( yS>yE ) { y=yS; yS=yE; yE=y; } for( y=yS+1; yxE ) { x=xS; xS=xE; xE=x; y=yS; yS=yE; yE=y; } // 始点終点入れ替え dx=xE-xS; dy=yE-yS; a=dy/dx; b=yS-a*xS; // 直線の係数 for( x=xS+1; x