プロが教えるわが家の防犯対策術!

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

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

A 回答 (11件中1~10件)

>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
    • good
    • 0
この回答へのお礼

OSはXPで
バージョンはTiny Basic for Windows v. 1.15b(jan.2007)
bytakeuchi Teruoです。

このプログラムでもできましたありがとうございました!!

お礼日時:2007/06/19 20:24

了解です。



(コード的には#9の方が実はエレガントな気がする)
    • good
    • 0
この回答へのお礼

きれいですね^^

お礼日時:2007/06/19 20:37

>あーー、できました。


ありがとうございます!!!!

一応聞かせて。

#3 + 一部修正 + #8の修正
で動いたものに対する反応?

それとも
#9で動いたものに対する反応?

締め切るときにでも教えてくれる?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/19 20:36

あー撤回。



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

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

お礼日時:2007/06/19 20:17

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

    • good
    • 0

>どのようなプログラムをつくったら


回答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
なんてこともあったから。
    • good
    • 0
この回答へのお礼

if文は起動には成功しましたがやっぱり青点って表示されます

PUBLIC Aのやつはエラーになります
エラー:コマンド PUBLIC の構文エラーです。
コマンドまたは引数のミスタイプが考えられます。
って感じです

お礼日時:2007/06/19 19:58

> =< や => じゃなくて <=/>= ではないのですか?


あ。でもまぁ一応当方環境では動作しています。

>Select Case の使い方が間違っています。
私も最初はそう思ったのですが、間違ってないと思います。

Select Case TRUE
って書けばお分かりでしょうか?
次のCase の後に指定された条件文がTRUEとなればそれが選ばれる、という。

#当方環境では
80を入力したら「合格」
30を入力したら「赤点」
15を入力したら「青点」
が表示されました。

PUBLIC A
がポイントだと思うんだけどなあ・・・・
(#1で掲示したコードはうっかりAの後に全角空白入れちゃったっぽいのでそのままコピペすると文法エラーと怒られます。)

#ちなみに検証環境はTiny Basic for Win 1.15b on WinXP Pro SP2です
    • good
    • 0
この回答へのお礼

Select Case TRUEとかPUBLIC A のところが特にわかりませんね。。

どのようなプログラムをつくったらちゃんと結果がでたんですか?
おしえてください><

お礼日時:2007/06/19 19:23

外してたらごめんなさい。



> Case A=<29
> print"青点"
> Case A=>50

=< や => じゃなくて <=/>= ではないのですか?

Tiny Basic for Windowsについて
http://tinybasic.hp.infoseek.co.jp/TBIntro/tbasi …

ですよね?

でも構文エラーになっていないのか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/19 19:21

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
    • good
    • 0
この回答へのお礼

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文に対応してませんとでてしまって

お礼日時:2007/06/19 19:18

Tiny Basicの経験は皆無ですが,


  Case A=<29  Case A=>50
をそれぞれ,
  Case A<=29  Case A>=50
と書き換えてみたらどうなります?
多くのプログラム言語が,後者の書き方のみを採用しているので。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/19 19:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!