- ベストアンサー
Tiny Basicのプログラムです。。
Tiny Basicのプログラムで 試験の成績を入力し、30点未満なら青点、30点以上50点未満なら赤点、50点以上なら合格と表示するプログラムを作成せよ。青点、赤点、合格を判定する部分は副プログラムとして作成せよ。 という問題があったんです。 それで僕は Cls input A Call Q Sub Q END Select Case A=A Case A=<29 print"青点" Case A=>50 print"合格" Case else print"赤点" End Select End sub というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
>PUBLIC Aのやつはエラーになります エラー:コマンド PUBLIC の構文エラーです。 コマンドまたは引数のミスタイプが考えられます。 俺の環境では全くそうならない。念のため、Tiny BasicのバージョンとOSを言ってもらえる? 使えないバージョンだと仮定して 一応結構苦し紛れでこう書き直してみたけど・・・・ Cls input A Call Q(A) END Sub Q(X) Select Case X=X Case X=<29 print"青点" Case X=>50 print "合格" Case else print "赤点" End Select End sub
その他の回答 (10)
- himajin100000
- ベストアンサー率54% (1660/3060)
了解です。 (コード的には#9の方が実はエレガントな気がする)
お礼
きれいですね^^
- himajin100000
- ベストアンサー率54% (1660/3060)
>あーー、できました。 ありがとうございます!!!! 一応聞かせて。 #3 + 一部修正 + #8の修正 で動いたものに対する反応? それとも #9で動いたものに対する反応? 締め切るときにでも教えてくれる?
お礼
#9のほうです^^ 本当にありがとうございました。 あの、よかったらもう一つ同じプログラム言語で質問してるんでよかったら答えてください。 おねがいします。 一番新しい質問のはずなんで^^;
- himajin100000
- ベストアンサー率54% (1660/3060)
あー撤回。 これも頭に PUBLIC A がないと駄目だ。 ( これがない→サブルーチン内のAとメインルーチンのAが異なる変数とみなされる これがある→サブルーチン内のAとメインルーチンのAが同じ変数とみなされる )
お礼
あーー、できました。 ありがとうございます!!!!
- himajin100000
- ベストアンサー率54% (1660/3060)
あれ?ちょっと待って、本当に青点って表示された>#3さんのプログラム
- himajin100000
- ベストアンサー率54% (1660/3060)
>どのようなプログラムをつくったら 回答1の PUBLIC A から End sub までそのまま。 >起動させるとSub文に対応してませんとでてしまって 多分DT200さんがC/C++のノリで書いちゃったからだと思う Basicは Else If じゃなくて ElseIf だ。 多分そこを全部直せば動くんじゃないかなあ? >Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。 何かいい説明があればURL読んどいて、で済むんだけど、ちょっと探す気力が沸かない。済まぬ。 #ちなみに一応環境を述べたのは http://oshiete1.goo.ne.jp/qa3088906.html なんてこともあったから。
お礼
if文は起動には成功しましたがやっぱり青点って表示されます PUBLIC Aのやつはエラーになります エラー:コマンド PUBLIC の構文エラーです。 コマンドまたは引数のミスタイプが考えられます。 って感じです
- himajin100000
- ベストアンサー率54% (1660/3060)
> =< や => じゃなくて <=/>= ではないのですか? あ。でもまぁ一応当方環境では動作しています。 >Select Case の使い方が間違っています。 私も最初はそう思ったのですが、間違ってないと思います。 Select Case TRUE って書けばお分かりでしょうか? 次のCase の後に指定された条件文がTRUEとなればそれが選ばれる、という。 #当方環境では 80を入力したら「合格」 30を入力したら「赤点」 15を入力したら「青点」 が表示されました。 PUBLIC A がポイントだと思うんだけどなあ・・・・ (#1で掲示したコードはうっかりAの後に全角空白入れちゃったっぽいのでそのままコピペすると文法エラーと怒られます。) #ちなみに検証環境はTiny Basic for Win 1.15b on WinXP Pro SP2です
お礼
Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。 どのようなプログラムをつくったらちゃんと結果がでたんですか? おしえてください><
- sakusaker7
- ベストアンサー率62% (800/1280)
外してたらごめんなさい。 > Case A=<29 > print"青点" > Case A=>50 =< や => じゃなくて <=/>= ではないのですか? Tiny Basic for Windowsについて http://tinybasic.hp.infoseek.co.jp/TBIntro/tbasic.html ですよね? でも構文エラーになっていないのか。
お礼
これ学校の授業の一貫なんです。。。 授業では=<と=>ぐらいしか習ってなくて
- DT200
- ベストアンサー率38% (63/164)
Select Case の使い方が間違っています。 Select Case A ← A=Aではない Case 0 To 29 ← toで範囲を指定できるか不明(以上や以下という使い方はできない) print "青点" Case 30,31,32,33, .... ,48,49 ← これはOKのはず Print "赤点" Case 50 To 100 Print "合格" Case Else Print "入力誤り" End Select とするか、If文で判断します。 If ( A >= 0 ) and ( A < 30 ) Then Print "青点" Else If ( A>=30) and (A<50) Then Print "赤点" Else If (A>=50) and (A<=100) Then Print "合格" Else Print ”入力誤り" End If
お礼
Select Caseのプログラムはなんかよくわからなくてできませんでした。。 If文はとりあえず入れてみましたがエラーになってもうすこしでできそうだったんですが。。(泣 Cls input A Call mb end Sub mb If ( A >= 0 ) and ( A < 30 ) Then Print "青点" Else If ( A>=30) and (A<50) Then Print "赤点" Else If (A>=50) and (A<=100) Then Print "合格" end if End sub end という感じです 起動させるとSub文に対応してませんとでてしまって
- jjon-com
- ベストアンサー率61% (1599/2592)
Tiny Basicの経験は皆無ですが, Case A=<29 Case A=>50 をそれぞれ, Case A<=29 Case A>=50 と書き換えてみたらどうなります? 多くのプログラム言語が,後者の書き方のみを採用しているので。
お礼
やっぱりできませんね。。
- himajin100000
- ベストアンサー率54% (1660/3060)
Call Q Sub Q END は Call Q END Sub Q だと思います と、それは本題とは関係ないのでおいておくと、 変数のスコープの問題のようです。 PUBLIC A Cls input A Call Q END Sub Q Select Case A=A Case A=<29 print"青点" Case A=>50 print"合格" Case else print"赤点" End Select End sub とすれば一応動くようです(文法的に正しいかどうか知らない) 先ほどTiny Basic用のスコープに関する説明見つけたはずなのだが どっかへ行ってしまった。
お礼
回答ありがとうございます。 やってみましたがやっぱり青点とでてしまいます
お礼
OSはXPで バージョンはTiny Basic for Windows v. 1.15b(jan.2007) bytakeuchi Teruoです。 このプログラムでもできましたありがとうございました!!