ページ 11

入力したアルファベットの小文字を点字で表示したいのですが・・・

Posted: 2010年12月20日(月) 22:55
by カンザキ
初めまして、C言語を勉強している高校生です。

このプログラムの結果としてこのように表示したいと考えています。

abcdeと入力したとき実行

入力した文字 = abcde
*.
..
..

*.
*.
..

**
..
..

**
.*
..

*.
.*
..

このようにするには、a = *.\n..\n\..\n(適当ですが) というふうにa~zまでプログラムしなければいけないんですか?
それとも何か点字には法則のようなものがあり、上記のようにしなくても簡潔にできますか?
できれば簡単にプログラムを書いて欲しいのですが・・・・・

Re: 入力したアルファベットの小文字を点字で表示したいのですが・・・

Posted: 2010年12月20日(月) 23:15
by h2so5
規則性はあるようですが。
wだけ例外で、10文字ごとに周期があるようです。

http://ja.wikipedia.org/wiki/%E7%82%B9% ... 3.E3.83.88

Re: 入力したアルファベットの小文字を点字で表示したいのですが・・・

Posted: 2010年12月21日(火) 09:49
by toyo
点字の配置を数値として扱った方が汎用性が増すと思います
3点が2列の6ビットで表現できるので8進数で扱えばちょうど良さそうです

コード:

#include <stdio.h>

int main(void)
{
    int i;
    int alpha[] = {
    /* a-j */
        001, 003, 011, 031, 021, 013, 033, 023, 012, 032,
    /* k-t */
        001+4, 003+4, 011+4, 031+4, 021+4, 013+4, 033+4, 023+4, 012+4, 032+4,
    /* u-z */
        001+044, 003+044, 072,011+044, 031+044, 021+044};
    for (i = 0; i < 26; i++)
    {
        if (alpha[i] & 001)
        {
            printf("●");
        }
        else
        {
            printf("○");
        }
        if (alpha[i] & 010)
        {
            printf("●\n");
        }
        else
        {
            printf("○\n");
        }
        if (alpha[i] & 002)
        {
            printf("●");
        }
        else
        {
            printf("○");
        }
        if (alpha[i] & 020)
        {
            printf("●\n");
        }
        else
        {
            printf("○\n");
        }
        if (alpha[i] & 004)
        {
            printf("●");
        }
        else
        {
            printf("○");
        }
        if (alpha[i] & 040)
        {
            printf("●\n");
        }
        else
        {
            printf("○\n");
        }
        printf("\n");
    }

    return 0;
}

Re: 入力したアルファベットの小文字を点字で表示したいのですが・・・

Posted: 2010年12月23日(木) 13:37
by カンザキ
toyoさん 返信ありがとございます。
アルファベットを数字としてみれば点字にしやすいというのがわかりました。
ですが、僕の勉強不足で今回つくりたいプログラムはscanfで読み込んだアルファベットを点字にするというプログラムにどのように組み込んでいいのか分からないので教えていただけないでしょうか?

Re: 入力したアルファベットの小文字を点字で表示したいのですが・・・

Posted: 2010年12月23日(木) 20:21
by 沖 滉均
カンザキ さんが書きました:ですが、僕の勉強不足で今回つくりたいプログラムはscanfで読み込んだアルファベットを点字にするというプログラムにどのように組み込んでいいのか分からないので教えていただけないでしょうか?
カンザキさんはどこが分からないのでしょうか?
scanfで文字を取得する方法が分からない。
scanfで読み込んだ文字を数値にして使う方法が分からない。
など、色々あると思います。

scanfで文字列を取得して、出力するだけのプログラムや
上記で取得した文字列を1文字ずつ出力することはできるでしょうか?