• ベストアンサー

数値英単語変換プログラム

chie65536の回答

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.6

「すべての組み合わせ」を洗い出して対応表を作り、対応表から英単語を取り出す、と言う方法を使うしかありません。 対応表は「共通の部分は、1つで済ます」などの工夫をすると良いでしょう。 例えば「日本語のひらがな」に変換するのを考えてみましょう。 一の位は 0⇒「」 1⇒「いち」 2⇒「に」 3⇒「さん」 4⇒「よん」 5⇒「ご」 6⇒「ろく」 7⇒「なな」 8⇒「はち」 9⇒「きゅう」 です。 十の位は 0⇒「」 1⇒「じゅう」 2⇒「にじゅう」 3⇒「さんじゅう」 4⇒「よんじゅう」 5⇒「ごじゅう」 6⇒「ろくじゅう」 7⇒「ななじゅう」 8⇒「はちじゅう」 9⇒「きゅうじゅう」 です。2~9は「△△じゅう」の「△△」は一の位と共通です。なので 0⇒「」 1⇒「じゅう」 2~9⇒一の位の対応表+「じゅう」 とすれば、十の位が出来ます。 百の位は 0⇒「」 1⇒「ひゃく」 2⇒「にひゃく」 3⇒「さんびゃく」 4⇒「よんひゃく」 5⇒「ごひゃく」 6⇒「ろっぴゃく」 7⇒「ななひゃく」 8⇒「はっぴゃく」 9⇒「きゅうひゃく」 です。3とか6とか8は他と違うので、専用の対応表が必要でしょう。 千の位は 0⇒「」 1⇒「せん」 2⇒「にせん」 3⇒「さんぜん」 4⇒「よんせん」 5⇒「ごせん」 6⇒「ろくせん」 7⇒「ななせん」 8⇒「はっせん」 9⇒「きゅうせん」 です。ここも3とか8は他と違うので、専用の対応表が必要でしょう。 さて、一万~千万の位は「一の位~千の位と同じ+まん」ですから、一~千の位と同じ処理をして、最後に「まん」を足せば良い事になります。 一億~千億の位も「一の位~千の位と同じ+おく」ですから、同じです。 なので「813573」は「81+まん+3573」と処理する事になります。 これで「813573」が「はちじゅういちまんさんぜんごひゃくななじゅうさん」になります。 英語の場合も「3桁ごと」に「thousand」や「million」が付くだけなので「一の位~百の位と同じ+thousand」や「一の位~百の位と同じ+million」で大丈夫でしょう。 で、1つだけ「例外」があるので、これらの処理をする前に、例外処理をしておきます。 それは「数値が0だった時」です。この場合は例外的に「れい」(零のこと)に変換して終了します。英語なら「Zero.」にして終了ですね。 英語も、同じように「一の位、十の位、百の位の対応表を3つ作って、3桁ごとに処理」で出来ます。 あとは、日本語に無い「11」「12」などの特殊な表現を「例外として特別な処理」をすれば完成です。

関連するQ&A

  • 数値英単語変換

    C言語で、入力された数値を英単語に変換するプログラムを作りますが、0~999,999,999 までの整数値について,正しく英単語に変換できるところとします。プログラミングが本当に苦手で、いったいどこから始めばいいのか、さっぱりわかりません。どうか教えてください。 できれば、詳しく説明して頂ければ、助かります。

  • 英単語をカタカナに変換するスクリプト

    英単語数文字をカタカナに変換したいです。 例えば、pen and ink でしたら ペン アンド インク のように変換するものです。 プログラムから参照できるスクリプトはありましたでしょうか? 検索したところ、ルビックスというウェブサイトがありました。 http通信を使わず、プログラムから利用したいので難しそうです。

  • フーリエ変換のプログラム

     プログラム言語の種類は問いません。 入力数値データを読み込み(ファイルからでも直接入力によるものでもかまいません)、 フーリエ変換を行うプログラムの基本的な考え方を教えてください(プログラムそのものは求めません。考え方を教えてください)。  しばらくの間フーリエ変換について勉強してはいるものの、まだよく理解していない状況ですし、プログラムに関してもまだまだ未熟者です。 しかし、どちらも勉強しながらこのプログラムを作ってみようと思っています。  けれども、フーリエ変換の指数関数を用いた式だと虚数を扱わなければならないし、 sin, cosを使った式だと計算量が膨大になってしまいそうで(指数関数を用いた式でもそんなに変わらないとは思いますが)、 どこから手をつければよいかまったく見当がつきません。 考え方を教えていただければ結構ですので、よろしくお願いします。

  • 英単語をアルファベット順に

    英単語をいくつか入力し、それをアルファベット順に並べ替えるプログラムが作りたいのですが。アルファベットをaから順に小さくなっていくようにし、英単語の頭文字を取り出し大きい順に並べ替えるというふうな感じにしたいのですが、なかなかうまくいきません。誰か教えていただけませんか?

  • VBとExcelを使って英単語テストプログラムを作るには?

    英単語とその和訳をエクセルシートとして登録し、そこから和訳をランダムに出題して英単語を入力させる。正解なら正解、間違いなら間違いを表示して、新しい問題をランダムに出題させる・・・こんな単純?なプログラムを作成したいです。具体的なソースか、又は参考になるホームページを教えて下さい。よろしくお願いします。

  • 単語登録した単語で変換できないものがあります。

    IME2003を使っています。 一括登録した単語辞書が現在入っているのですが、 変換できない単語がいくつかあります。 よくホームページなどで紹介されている方法で、 IMEの修復や1度出力して修復後に入れ直しをしたりなど試してみたのですが、改善されません。 そこで怪しいなと思ったことがあります。 変換したときに例えば「問う」という単語を変換すると、 候補がずらっと出てきますよね。 そこにある英語の候補なのですが、 「toe」と出てるのです。 「tou」と入力してるのにですよ? 他にも「人(jin)(zin)」と変換すると英単語候補が 「gin」になっているのです。 これが原因となっているのでしょうか? 治し方とかわかる方おられましたら、教えてください! お願いします(><)

  • C言語でアナグラムを求めるプログラム

    C言語初心者で、勉強中です。 今アナグラムを求めるプログラムをC言語で作成しています。 内容はあらかじめある英単語が書いてあるテキストファイルから互いにアナグラムとなっている英単語をすべて求めてそれを出力するというプログラムです。 どこから手をつけていいかわからず悩んでいます。 そこでヒントをいただこうと思って質問しました。 どなたか回答よろしくお願いします。

  • Cプログラム

    c言語で「正整数Nを入力後、N個の実数を入力し、それらの平均値と最大値を表示するプログラム」を教えてください。

  • PIC 文字 を 数値に 変換

    アセンブラ言語(PIC)で、シリアルで受信した文字列数値を数値に変換したいのですが、どなたかプログラムを教えてくださいませんか?

  • 数値を文字列に変換する処理

    基本情報の午後試験の擬似言語の問題でわからないところが あります。 この処理は、数値の整数部分を文字列に変換しスタックに積む プログラムです。 (たとえば、12.345だったら整数部分の12の一の位から順に スタックに積んでいきます。) Int()は小数部分を切り捨てる処理です。 文字型:Chr[]={"0","1","2","3","4","5","6","7","8","9"},T 整数型:Fint,idx; Fint=Int(F); while(Fint>0) { Idx=Fint - (Fint/10)*10; Push(chr[idx]); Fint=Fint/10; } 質問としては、なぜ上記のような処理で下位桁から順にスタックに 積んでいけるのかわかりません。 たとえば、Fint=Int(F)でFintに12が格納されて、 Idx=Fint - (Fint/10)*10の式でIdxには0が格納されて本来格納 されるべき'2'が格納されないと思うからです。 Idx=12-(12/10)*10→0というようにです。 表記は、擬似言語とC言語がごっちゃになっており大変わかりにくい かとは思いますが、何卒よろしくお願いします。