No.60-5 |
簡単な図形を描きたい |
回答者 入川 精二 |
1997年09月 188号 P.27 |
◆ No.60(1997年 08月号)の回答-05
いろんなアプローチの方法があると思います。
私は昔中学校で習った解析幾何学を思い出しました。記憶の糸を手繰りながら、座標系と数式と図形の関連を考えて、何とか糸口を掴んだのが下のプログラムです。
「最大値」とは菱形の横方向の # の数の最大値です。これを指定するだけで勝手に表を作って作図します。
15行目の FOR X3=X1-1 TO -(X1-1) STEP -2; がこのプログラムのポイントです。
例えば、菱形の最大値を‘7’と指定すると、X3 は 6,4,2,0,-2,-4,-6 と変化します。この数列を使って行毎の # の数を決めて行きます。
【プログラム】
1 <ZU>
2 $仕様: ACCEPT "菱形の最大値は? [MAX:41] ",X1; /* 菱形のサイズを決める */
3 IF X1>41 THEN GOTO $仕様; /* X1 が41以上はダメ */
4 IF X1MOD2=0 THEN LET X1=X1+1; /* X1 が偶数なら奇数にする */
5 $作表: SET/N;S;M;1;180;;Y;
6 O;図形;%(X1*3);;ESC;
7 ATR;P;C;1;
/* 表の属性はセンタリング */
8 IR;S;T+1;%X1;
9 $書込: FOR X3=X1-1 TO -(X1-1) STEP -2;
10 CLEAR V1;
11 FOR X4=1 TO X1-INTG(ABS(DCML(X3))); /*
# の数を設定 */
12 LET V1=" # "+V1;
13 NEXT;
14 LET [H+X2,1]=V1;
15 LET X2=X2+1;
16 NEXT;
17 STOP;
絶対値を求める関数は‘Z変数’でしか使えないのですね。
11行目のINTG(ABS(DCML(X3))) は、単に X3 の絶対値を求めているだけです。
□
|
|
| |