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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
カンザキ

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

#1

投稿記事 by カンザキ » 13年前

初めまして、C言語を勉強している高校生です。

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

abcdeと入力したとき実行

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

*.
*.
..

**
..
..

**
.*
..

*.
.*
..

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 13年前

規則性はあるようですが。
wだけ例外で、10文字ごとに周期があるようです。

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

アバター
toyo
記事: 35
登録日時: 13年前
住所: 宮崎県

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

#3

投稿記事 by toyo » 13年前

点字の配置を数値として扱った方が汎用性が増すと思います
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: 入力したアルファベットの小文字を点字で表示したいのですが・・・

#4

投稿記事 by カンザキ » 13年前

toyoさん 返信ありがとございます。
アルファベットを数字としてみれば点字にしやすいというのがわかりました。
ですが、僕の勉強不足で今回つくりたいプログラムはscanfで読み込んだアルファベットを点字にするというプログラムにどのように組み込んでいいのか分からないので教えていただけないでしょうか?

アバター
沖 滉均
記事: 237
登録日時: 13年前
住所: K県F市

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

#5

投稿記事 by 沖 滉均 » 13年前

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

scanfで文字列を取得して、出力するだけのプログラムや
上記で取得した文字列を1文字ずつ出力することはできるでしょうか?
There is no royal road to learning.
codeタグで指定できる言語
画像

閉鎖

“C言語何でも質問掲示板” へ戻る