- 締切済み
Basicでのプログラムなのですが・・・
高校の情報の問題なのですが・・・・ ・三角形の面積を求めるプログラム ・n,rを入力しnPrを求めるプログラム をBASICでプログラムを作らなければならないのですが・・・・ 全く解りません。 どなたか,教えてください。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- ultraCS
- ベストアンサー率44% (3956/8947)
情報の課題と言うことで、多分、プログラムの方が本題だと思うので、幾何のヒントを 三角形がどういう形で出題されているのかわかりませんが、各点の座標が与えられているなら、そこから辺長を計算して、ヘロンの公式を使います。 http://www.asahi-net.or.jp/~jb2y-bk/NaturalSci/math/heron.htm 底辺と高さで出題なら、点辺×高さ÷2ですみますから、それでいいです。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス >高校の授業ではN88というソフトで実習をしているのですが・・・ ↑ 驚き! N88-BASIC ってかなり古いですね。 今の高校では『情報A』で BASIC を習うんですか? ・さて本題。 >n,rを入力しnPrを求めるプログラム ↑ これを求めるには先に階乗を求めるサブルーチンとかを作って処理すれば楽になりますよ。 あと順列 nPr は n!/(n - r)! という式で簡単にもとまります。 なので (1)n の階乗を求める…α (2)(n - r) の階乗を求める…β (3)α÷βで nPr が計算できます。 ↑ これを参考にして下さい。 サンプル: '階乗を求める部分 ANS=1 LOOP=N ←求める階乗の数 WHILE LOOP != 1 ANS = ANS * LOOP LOOP = LOOP - 1 WEND PRINT "Nの階乗は";ANS;"です。" 解説: ・上記のサンプルは階乗を計算する部分のみです。 この部分を参考に nPr の n、(n-r) の階乗を求めて割り算すれば順列が求まります。 サブルーチンにしても良いし、上記のサンプルを処理手順の順に記述しても良い。 とにかく nPr は n!/(n - r)! という式で簡単に計算できます。 >たぶん、底辺×高さ÷2の方だと思います。 ↑ これだけなら INPUT で『底辺』、『高さ』を入力して計算したものを PRINT 文で 画面に表示すればよいだけです。 ・以上。
- zwi
- ベストアンサー率56% (730/1282)
N88-BASICですか。やべっ詳しい文法を覚えてねぇ。 とりあえず、間違いだけ指摘させてもらいます。 (1)問題ないですが、工夫するともっと良くなります。 (2)ELSEも使いましょう。 (3)実際には2行に分けたほうが良いです。aが1から始まるとS = n * (n-1) * (n-2) * ・・・ * (n-r+1)とは違うますよ。 (4),(5)は、代入文です。代入先を用意しないと。 (6)ループの方法は何を習いましたか? (7)これでも表示されますが、工夫するとさらに良くなります。 サンプルがあるんで、ここをまず読んでみてください。 http://mis.edu.yamaguchi-u.ac.jp/kaisetu/n88basic_00/index.html で、自宅でフリーソフトのN88-BASIC互換ソフトが使えます。上のサンプルも互換BASICを使っています。WindowsVsitaじゃなければ問題なく動くはずです。 http://www.vector.co.jp./soft/win31/prog/se025866.html http://www.vector.co.jp./soft/win95/prog/se055956.html 2つあるんで、使いやすくて問題なく動くほうを使ってください。
- FrintStone
- ベストアンサー率22% (14/63)
> それだけでいいんですか!? > てっきり二辺×間の角のsinかと思ってました・・・・ いやいやいや、実際の所わかりません。 どんな三角形か、よりも三角形のどの要素を使って面積を求める事になっているのか、条件が分からないと正しいかどうか判断できません。 二辺と間の角で求めよ、となっているなら、その条件で式を考えなくてはいけません。 これはプログラムを構築する以前に「仕様」の問題です。 底辺と高さを与えると言われていたら、二辺の長さは分かりっこ無いですよね。 こういった条件を何も提示されていないなら、簡単な方で答えても間違ってはいないですよね?(^_-)
- zwi
- ベストアンサー率56% (730/1282)
そうですね。3角形のほうはNo.2の方の通りなので2つ目を整理してプログラム的にしてみます。 (1)n,rを入力します。 (2)(n ≧ r)かチェックして問題がないなら続行。 (3)sとaを初期化します。 (4)sに(n-a)を掛け算します。 (5)aに1を足します。 (6)r回ループを回るまで(4)~(6)を繰り返します。 (7)sを表示します。 では質問です。(1)~(7)で使うBASICの命令は何でしょうか? sとaを初期化しますと書きましたが、初期値は何でしょう? あっ、使っているBASICの種類を聞き忘れました。ソフトメーカーはどこのメーカーのBASICでしょう?バージョンは?
お礼
(1)INPUT n,r (2)IF n>=r THEN GOTO (3) (3)s=1 a=1 (4)s*(n-a) (5)a+1 (6) (7)PRINT s みたいな感じでしょうか? (4)~(6)がよくわかりません・・・・ 初期値はどちらも1でしょうか? ソフトメーカーは・・・わかりません。 高校の授業ではN88というソフトで実習をしているのですが・・・
- FrintStone
- ベストアンサー率22% (14/63)
三角形はどんな三角形であれ、底辺×高さ÷2ですよね? その3つの変数へ数値を代入して計算結果を表示させれば終わりでは?
お礼
それだけでいいんですか!? てっきり二辺×間の角のsinかと思ってました・・・・ 有難うございます
- zwi
- ベストアンサー率56% (730/1282)
教えて!gooでは学校の問題の丸投げは[作成依頼目的]でNGです。自分が出来たところまでを必ず書いてください。 もし全然出来ないなら、まず先生か友達に分かるまで徹底して聞きましょう。そのために授業料を払って学校に行っているんですから。 2つの問題の解法を箇条書きで書けるなら、BASIC化するヒントはあげられると思います。
お礼
有難うございます。 そうですよね。 もっと頑張ってみないとダメですね・・・ 一応、このあたりまでは出来たのですが・・・ nPrの方は (n ≧ r) n,rを入力して 求める答えをSとして S = n * (n-1) * (n-2) * ・・・ * (n-r+1) Sを表示 みたいな感じでいいと思うのですがどうでしょうか? 三角形の面積の方はどんな三角形か書いてないので解らないです・・・
お礼
それもそうですね。 たぶん、底辺×高さ÷2の方だと思います。 ご意見有難うございました。