• ベストアンサー

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

  • Tiny Basicのプログラムで。。

    西暦年数を入力し、うるう年かどうかの判定を行うプログラムを作成せよ。 うるう年は400で割り切れる年数または4で割り切れ、かつ100で割り切れない年数です。0(ゼロ)を入力するとプログラムを終了し、0以外を入力したときには判定結果を表示し、そのまま次の入力待ちとなり、連続して判定できるようにしなさい。 っていうのをつくりたくて cls input A Select Case A=A Case A=(A/400) print"うるう年" Case A=(A/4)and(A) っていうとこまで作ったんです>< この次はどうしたら。。 てか、割り切れないっていうのはどうやって表したらいいんですか?

  • Tiny Basicのプログラムでもうひとつ。。

    三角形の三辺の長さを入力し、面積を求めるプログラムを作成せよ。三角形の面積はヘロンの公式を用いて求める。ヘロンの公式による面積計算部分を関数プログラムとして作成せよ。 ヘロンの公式:三辺の長さをa,b,cとすると,(s(s-a)(s-b)(s-c))^2  s =(a+b+c) それで僕なりに作ってみたんですが cls print"入力した数字から三角形の面積を求めます" input a,b,c s=(a+b+c)/2 A=(s-a)*(s-b)*(s-c) B=A*s M=(B^2) print M end が副プログラムを入れないで作ったもので 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 M=(B^2) print M end function になるんですがなぜだか結果が0になってしまいます なぜでしょうか?

  • tiny basicでプログラム作成

    次の問題のプログラムをtiny basicで作成してみてくだい。 理科、数学、国語、音楽、体育の点数を読み込み、5科目の平均点を計算し、平均点が60点以上で合格、60点以下なら不合格と表示するプログラムをつくりなさい。 各科目の点数は、理科50点、数学80点、国語40点、音楽60点、体育64点とする。

  • Tiny Basicのプログラムで。。

    次の5人の学生の成績の個人別の平均点と、科目別の平均点をそれぞれ求め、表示するプログラムを作成せよ。Print Using 文を使うと、きれいな表形式の出力が可能です。 学籍番号 英語 数学 情報 平均   1   70 60 80 2 50 60 50 3 70 90 100 4 90 100 50 5 40 70 80 という問題があって。。自分なりにやってみたんですが。。 Dim a(5,5) For i=1 to 5 For j=1 to 5 Read a(i,j) print a(i,j); Next j print Next i Data "学生番号","英語","数学","情報","平均" Data 1,70,60,80,70 Data 2,50,60,50,53 Data 3,70,90,100,87 Data 4,90,100,50,80 Data 5,40,70,80,63 Data "平均",64,76,72,71 End っていうふうにつくってみたんですがうまくいかなくて。。 みなさん、助けてください><

  • Tiny Basic。。。。

    今、やってるプログラムで躓いてしまっているのでどうか助けてください>< 今、ファイルの書き込みのプログラムでフロッピーディスクに書き込みをするプログラムをつくってて。。 前につくったのはフロッピーにjyoho01.txtのファイルを書き込むっていうのを作って 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\jyoho01.txt" for output as #1 For i=1 to 10 Print #1,i Next i Close print "書き込みが終了しました。" End っていうのを作ったんです。これはちゃんとできたんです。 つまづいてるのが フロッピーディスク内にあるX線回折結果のデータファイル(xrd01.csv)のデータ数を1/5に縮減して、新しいファイル(xrd02.csv)を作成するプログラムを作成せよ。 っていうのなんです。 とりあえず、このX線回折結果っていうのがエクセルで 15  133.333 15.02  170 15.04  170 15.06  143.333 15.08  146.667 15.1  170 15.12  173.333 15.14  200 15.16  156.667 15.18  190 15.2  180 っていうデータがあって80までの値があるんです。 先生から聞いたところ5分の一にしろというのは15と15.1の間の数値を飛ばして15 15.1といったふうにファイルの書き込みを指示すれば14行くらいで出来るって言われて自分でやってみたんですが。。 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\xrd02.csv" for output as #1 For i=15 to 80 step 0.1 Print #1,i Next i Close print "書き込みが終了しました。" End で実行したところ左の15 15.1っていうのはできるんですが右の値を出すことができません。 どうやったらいいんでしょう。。 長くてすみません(泣

  • このプログラムどこでできるの?

    10 CLS 20 A=A+1 30 PRINT A 40 NEXT 20 50 END 環境はXPです。

  • tiny basicの入力です

    次の文をwindowsXPのtiny basicで入力するには、どのように入力すればいいのか教えてください!! 200人の児童の1科目のテストの得点(100点満点)を入力して、それぞれ出力するプログラムを書きなさい。 (1)85点以上の児童の人数 (2)85点未満、しかも60点以上の児童の人数 (3)60点未満の児童の人数 知っている方はよろしくお願いします!

  • tiny basicでのプログラミングの仕方をおしえてください!

    次の文をwindowsXPのtiny basicで入力するには、どのように入力すればいいのか教えてください!! 200人の児童の1科目のテストの得点(100点満点)を入力して、それぞれ出力するプログラムを書きなさい。 (1)85点以上の児童の人数 (2)85点未満、しかも60点以上の児童の人数 (3)60点未満の児童の人数 知っている方はよろしくお願いします!

  • Select Caseのisについて

    Isは変数名ではないですよね? Sub isを使った場合() Dim i As Long i = 2 Select Case i Case Is < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub 例えばこのようなサンプルの時、 Case Is < 3 の時は Case 2 < 3 Case i < 3 と同じ意味ですよね? という事は、is=i=2だと思ったのですが、 Sub 変数を使った場合() Dim i As Long i = 2 Select Case i Case i < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub だと、なぜか3以上ですになってしまいます。 ISの仕組みがよくわからないのですが、 Case Is < 3はCase 2 < 3 なってるわけではないのでしょうか?

  • selectステートメント

    ASP(VBスクリプト)で条件付のサブルーチンを作りたいんですけど 10未満はAを表示 10以上20未満はB 20以上はCを表示させるサブルーチン sub test(p) select case p case p<10 response.write A case p>=10 and p<20 response.write B case p>=20 response.write C end select end sub で行ったけどだめでした。 助けてください