質問: 数学プログラムの授業をしています。:プログラム言語は「Basic」です。 次の問題を後から自分で考えますので、見本を示してくださいっT_T。 (1)文字列A~Jまでを入力して A,C,E,G,Iと一つ飛びに表示するプログラム (2) 自分の姓と名前をローマ字読みで入れ、表示は、1を入力したら、ローマ字で名前、姓の順に表示、2させるプログラム。 文字変数の扱い方がよくわかりません。その点も教えてください。
回答: 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まで繰り返します。(エレガントな方法ではありませんが) 関数の説明は省きましたが参考になりますかね?