- ベストアンサー
Tiny Basicで三角形の面積を求めるプログラムを作成する方法
- Tiny Basicを使用して三角形の三辺の長さを入力し、面積を求めるプログラムを作成します。ヘロンの公式を使用します。
- 作成したプログラムには副プログラムが含まれておらず、結果が0になる原因となります。
- 正しくプログラムを作成するためには、副プログラムを追加して計算を行う必要があります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
別にsurfaceって特別なもんじゃない。 単に変数名がaとsとかが混ざってると個人的に見辛かったから勝手につけた変数名。sでもxでも何でもいいよ(笑 sqrは平方根。ルートね。あらかじめ定義されている関数というか副プログラムというか print sqr(4) とか print sqr(9) とか print sqr(16) とかやるとわかると思う。 >#4補足,#5補足。 その通り。変数名が同じでも, PUBLICがないと メインルーチン,サブルーチンが違うと 値が共有されていないことがわかるよね。 PUBLICで宣言された変数はルーチン間で同じ変数名の時に値を共有するんだ。
その他の回答 (5)
- himajin100000
- ベストアンサー率54% (1660/3060)
ついでにこれもかな。プログラムその4 cls a = 1 call hoge call fuga end sub hoge a = a+1 print a end sub sub fuga a = a+1 print a end sub
お礼
結果は1 1になりました
- himajin100000
- ベストアンサー率54% (1660/3060)
プログラムその1 cls a = 2 print a call hoge print a end sub hoge print a a = a+1 print a end sub ========= プログラムその2 public a cls a = 2 print a call hoge print a end sub hoge print a a = a+1 print a end sub ================== プログラムその3 これは俺も予想外だったんだけど・・・・ (2,0,1,0,1,2だと思ってたし、普通の言語はそうなる) cls a = 2 print a call hoge call hoge print a end sub hoge print a a = a+1 print a end sub
お礼
1の結果は2 0 1 2になって 2は2 2 3 3になって 3は2 0 1 1 2 2になりました
- himajin100000
- ベストアンサー率54% (1660/3060)
考えてもらおうと思って時間おいたけど、出来たかな? cls print"入力した数字から三角形の面積を求めます" input a,b,c print Mb3(a,b,c) end Function Mb3(X,Y,Z) s=(X+Y+Z)/2 surface=s*(s-X)*(s-Y)*(s-Z) surface=sqr(surface) Mb3 = surface end function 実は前回,Xを使ったり,今回X,Y,Zを使ったのは混乱しないようにするためで,別に変えなくても良かったんだけど。 勉強のために,次の回答の結果を考えてもらおうかな。(実際に実行して確かめてみてね)
お礼
surfaceやsqrも習ってないんでどういう意味だかわかりません>< surfaceやsqrを使わないでできませんかね?
- himajin100000
- ベストアンサー率54% (1660/3060)
あ、ちなみに、最初に表示される値はFunctionの方のprintで、後に表示されるのがメインルーチンのprintだ。 #1で書かなかったけど, 引数で書いた方がプログラム的にはいいんだろうなあ・・・ (出来るだけPublicとかGlobal[VB系の言語]とかが出てくるのは避けた方が良い。プログラムの可読性が下がるから)
お礼
とりあえずできました。。。 でも結果は一つでいいんでそれはまあprint mb3を消せば一つになったんでいいんですけど。。 やっぱり、publicはつかいたくないっすね^^; 授業でもやってないんで やっぱりそこは自分で考えないとだめか。。
- himajin100000
- ベストアンサー率54% (1660/3060)
'Q3097471と同様Functionの引数として渡さないなら 'PUBLICと宣言しておくべき PUBLIC a,b,c cls print"入力した数字から三角形の面積を求めます" input a,b,c print Mb3 end Function Mb3 s=(a+b+c)/2 A=(s-a)*(s-b)*(s-c) B=A*s '質問文のへロンの公式がそもそも間違ってます。調べてみよう 'input a,b,cのところで,3,4,5と打つと,a=3,b=4,c=5となる。 'この三角形は有名な直角三角形で,3*4/2 = 6が面積とならなければならない M=sqr(B) '戻り値をきちんとセットしないとメインルーチンで0になるのは当然だ。 Mb3 = M print M end function
お礼
なるほどなるほどありがとうございましたー^^