• ベストアンサー

プログラム作りです。

数学プログラムの授業をしています。:プログラム言語は「Basic」です。 次の問題を後から自分で考えますので、見本を示してくださいっT_T。 (1)文字列A~Jまでを入力して A,C,E,G,Iと一つ飛びに表示するプログラム (2) 自分の姓と名前をローマ字読みで入れ、表示は、1を入力したら、ローマ字で名前、姓の順に表示、2させるプログラム。  文字変数の扱い方がよくわかりません。その点も教えてください。

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

  • ベストアンサー
  • kabasan
  • ベストアンサー率44% (264/588)
回答No.3

10 INPUT "SEI? ",A$ 20 INPUT "MEI? ",B$ 30 INPUT "HYOJI TYPE?(1=ROMA,2=KANA) ",A 40 IF A=2 THEN GOSUB 100 50 PRINT B$+" "+A$ 60 GOTO 990 100 文字列変換サブルーチン A$をカナ変換し、B$へ格納 B$をカナ変換し、A$へ格納 890 RETURN 990 END 手抜きなので、表示タイプの入力に2以外を入れたら強制的にローマ字で出します。 この100から890行の中身が重要なのでしょうね。 しかし、ローマ字からカナへ変換する機能はBASICにはありませんから自分で作ることになります。ローマ字には1,2,3文字表示で1,2文字のカナになりますね。また、違う書き方で同じカナになったりします。 A ア SI シ SHI シ KYA キャ さらに「ッ」が入るパターンで 北別府=KITABEPPU(PPが連なる) など、大変複雑でここには書ききれる物ではないと思います。 最もわかりやすい考え方としては、以下のとおり(行番号は省略します) C$="" 文字列Cをクリア IF LEFT$(A$,1)="A" THEN C$=C$+"ア" GOTO !!! 先頭1文字を比較 IF LEFT$(A$,2)="SI" THEN C$=C$+"シ" GOTO ### 先頭2文字を比較 IF LEFT$(A$,3)="SHI" THEN C$=C$+"シ" GOTO %%% 先頭3文字を比較 IF LEFT$(A$,3)="KYA" THEN C$=C$+"キャ" GOTO %%% 先頭3文字を比較 !!! A$=RIGHT$(A$,文字列長-1) 文字列から先頭1文字を削除 ### A$=RIGHT$(A$,文字列長-2) 文字列から先頭2文字を削除 %%% A$=RIGHT$(A$,文字列長-3) 文字列から先頭3文字を削除 この比較をすべてのローマ字で文字列長0まで繰り返します。(エレガントな方法ではありませんが) 関数の説明は省きましたが参考になりますかね?

その他の回答 (2)

  • kabasan
  • ベストアンサー率44% (264/588)
回答No.2

10 DIM HAIRETU$(9) 文字列の格納場所を10個(0~9)確保する 20 FOR I=0 TO 9 30 INPUT A$ 40 HAIRETU$(I)=A$ 入力した文字列を格納 50 NEXT I 10回繰り返し 60 FOR I=0 TO 9 STEP 2 ひとつおきに表示 70 PRINT AAA$(I); セミコロンをはずせば文字列ごとに改行する 80 PRINT" "; 連続で表示する場合は間にスペースを挿入。いらなければこの行削除 90 NEXT I 100 END (2)の質問はタイプミスされているので意味がわかりませんでした。

lifebird
質問者

補足

(2) 自分の姓と名前をローマ字読みで入れ、表示は、1を入力したら、ローマ字で名前、姓の順に表示、2を入力したら、カナ字で名前、姓の順に表示させるプログラム。  文字変数の扱い方がよくわかりません。その点も教えてください。

回答No.1

(1) 10 INPUT A$ 20 For I=1 to 5 30 Print MiD$(a$,2*I,1) 40 next I 文字列の入力は続けて”ABCDEFGHIJ"と入力すると仮定しました。 表示はA,C,E...と1行づつに表示されます。 (2) 10 input "Last Name";a$ 20 Input "First Name";b$ 30 Input c 40 if C=1 then print a$;b$ else print b$;a$ 文字変数の扱い方がよくわかりませんとのことですが、どのようなことが判らないのでしょうか?

lifebird
質問者

補足

なんだか難しい構文(関数?)ですね。 文字関数に当たっては、下記ぐらい簡単にならないですかねぇ? 10:A$="Play" 20:B$="Station" 30:C$=A$+B$ 40:PRINT C$ 50:END これでPlay Stationと表示できる。

関連するQ&A