• ベストアンサー

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 というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.9

>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

famituu
質問者

お礼

OSはXPで バージョンはTiny Basic for Windows v. 1.15b(jan.2007) bytakeuchi Teruoです。 このプログラムでもできましたありがとうございました!!

その他の回答 (10)

回答No.11

了解です。 (コード的には#9の方が実はエレガントな気がする)

famituu
質問者

お礼

きれいですね^^

回答No.10

>あーー、できました。 ありがとうございます!!!! 一応聞かせて。 #3 + 一部修正 + #8の修正 で動いたものに対する反応? それとも #9で動いたものに対する反応? 締め切るときにでも教えてくれる?

famituu
質問者

お礼

#9のほうです^^ 本当にありがとうございました。 あの、よかったらもう一つ同じプログラム言語で質問してるんでよかったら答えてください。 おねがいします。 一番新しい質問のはずなんで^^;

回答No.8

あー撤回。 これも頭に PUBLIC A がないと駄目だ。 ( これがない→サブルーチン内のAとメインルーチンのAが異なる変数とみなされる これがある→サブルーチン内のAとメインルーチンのAが同じ変数とみなされる )

famituu
質問者

お礼

あーー、できました。 ありがとうございます!!!!

回答No.7

あれ?ちょっと待って、本当に青点って表示された>#3さんのプログラム

回答No.6

>どのようなプログラムをつくったら 回答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 なんてこともあったから。

famituu
質問者

お礼

if文は起動には成功しましたがやっぱり青点って表示されます PUBLIC Aのやつはエラーになります エラー:コマンド PUBLIC の構文エラーです。 コマンドまたは引数のミスタイプが考えられます。 って感じです

回答No.5

> =< や => じゃなくて <=/>= ではないのですか? あ。でもまぁ一応当方環境では動作しています。 >Select Case の使い方が間違っています。 私も最初はそう思ったのですが、間違ってないと思います。 Select Case TRUE って書けばお分かりでしょうか? 次のCase の後に指定された条件文がTRUEとなればそれが選ばれる、という。 #当方環境では 80を入力したら「合格」 30を入力したら「赤点」 15を入力したら「青点」 が表示されました。 PUBLIC A がポイントだと思うんだけどなあ・・・・ (#1で掲示したコードはうっかりAの後に全角空白入れちゃったっぽいのでそのままコピペすると文法エラーと怒られます。) #ちなみに検証環境はTiny Basic for Win 1.15b on WinXP Pro SP2です

famituu
質問者

お礼

Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。 どのようなプログラムをつくったらちゃんと結果がでたんですか? おしえてください><

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

外してたらごめんなさい。 > Case A=<29 > print"青点" > Case A=>50 =< や => じゃなくて <=/>= ではないのですか? Tiny Basic for Windowsについて http://tinybasic.hp.infoseek.co.jp/TBIntro/tbasic.html ですよね? でも構文エラーになっていないのか。

famituu
質問者

お礼

これ学校の授業の一貫なんです。。。 授業では=<と=>ぐらいしか習ってなくて

  • DT200
  • ベストアンサー率38% (63/164)
回答No.3

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

famituu
質問者

お礼

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)
回答No.2

Tiny Basicの経験は皆無ですが,   Case A=<29  Case A=>50 をそれぞれ,   Case A<=29  Case A>=50 と書き換えてみたらどうなります? 多くのプログラム言語が,後者の書き方のみを採用しているので。

famituu
質問者

お礼

やっぱりできませんね。。

回答No.1

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用のスコープに関する説明見つけたはずなのだが どっかへ行ってしまった。

famituu
質問者

お礼

回答ありがとうございます。 やってみましたがやっぱり青点とでてしまいます

関連するQ&A