• ベストアンサー
  • すぐに回答を!

プログラム作りです。

  • 質問No.393413
  • 閲覧数74
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 4% (2/45)

数学プログラムの授業をしています。:プログラム言語は「Basic」です。

次の問題を後から自分で考えますので、見本を示してくださいっT_T。

(1)文字列A~Jまでを入力して A,C,E,G,Iと一つ飛びに表示するプログラム

(2) 自分の姓と名前をローマ字読みで入れ、表示は、1を入力したら、ローマ字で名前、姓の順に表示、2させるプログラム。 

文字変数の扱い方がよくわかりません。その点も教えてください。

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

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

ベストアンサー率 44% (264/588)

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件)

  • 回答No.2

ベストアンサー率 44% (264/588)

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


(2)の質問はタイプミスされているので意味がわかりませんでした。
補足コメント
lifebird

お礼率 4% (2/45)

(2) 自分の姓と名前をローマ字読みで入れ、表示は、1を入力したら、ローマ字で名前、姓の順に表示、2を入力したら、カナ字で名前、姓の順に表示させるプログラム。 

文字変数の扱い方がよくわかりません。その点も教えてください。
投稿日時:2002/10/30 23:35
  • 回答No.1

ベストアンサー率 22% (57/255)

(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

お礼率 4% (2/45)

なんだか難しい構文(関数?)ですね。

文字関数に当たっては、下記ぐらい簡単にならないですかねぇ?

10:A$="Play"
20:B$="Station"
30:C$=A$+B$
40:PRINT C$
50:END
これでPlay Stationと表示できる。
投稿日時:2002/10/30 22:00
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ