課題:数値以外の文字にも対応させよ!
入力した数値に対応させたデジタルフォントを
表示するプログラム。
これを改良して数値以外のも文字にも対応させる
課題を出した。
2人提出があったよ。
元のプログラム
/*
xFont2.c : デジタルフォント
xFont1.cを改良:複数文字入力に対応させた
Created by dianxnao.com on 2018/10/16.
Copyright 2018 Shuichi Takeda, All rights reserved.
*/
#include <stdio.h>
void showNumber(int); /* 関数定義:指定した文字のデジタルフォントを表示する */
int main(void)
{
int i, n;
char moji[256];
printf("数値をいれてね: ");
scanf("%s", moji);
/* 入力した文字数分ドット絵を表示する */
for(i=0; moji[i] != '\0'; i++){
n = moji[i] - '0'; /* 文字を数値化する */
showNumber(n); /* 数値のドット絵を表示する */
}
return 0;
}
/* 関数:指定した文字のデジタルフォントを表示する */
void showNumber(int n)
{
printf("\n");
switch(n){
case 0:
printf("■■■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■■■\n");
break;
case 1:
printf(" ■ \n");
printf("■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■■■\n");
break;
case 2:
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
break;
case 3:
printf("■■■\n");
printf(" ■\n");
printf(" ■■\n");
printf(" ■\n");
printf("■■■\n");
break;
case 4:
printf("■ ■\n");
printf("■ ■\n");
printf("■■■\n");
printf(" ■\n");
printf(" ■\n");
break;
case 5:
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
break;
case 6:
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
break;
case 7:
printf("■■■\n");
printf("■ ■\n");
printf(" ■\n");
printf(" ■\n");
printf(" ■\n");
break;
case 8:
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
break;
case 9:
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
break;
default: /* 0 ~ 9以外の文字が入力された場合の表示 */
printf(" \n");
printf(" \n");
printf(" ■ \n");
printf(" \n");
printf(" \n");
}
}
ishiFont.c
/*
xFont1.c : デジタルフォント
このプログラムを関数化してみる
(英字版に改良してみる)
*/
#include <stdio.h>
void showNumber(int);
void font_A(void);
void font_B(void);
void font_C(void);
void font_D(void);
void font_E(void);
void font_F(void);
void font_G(void);
void font_H(void);
void font_I(void);
void font_J(void);
void font_K(void);
void font_L(void);
void font_M(void);
void font_N(void);
void font_O(void);
void font_P(void);
void font_Q(void);
void font_R(void);
void font_S(void);
void font_T(void);
void font_U(void);
void font_V(void);
void font_W(void);
void font_X(void);
void font_Y(void);
void font_Z(void);
void font_error(void);
int main(void)
{
int i, n;
char moji[256];
printf("英字をいれてね: ");
scanf("%s", &moji);
for(i=0; moji[i] != '\0'; i++){
n = moji[i] - 'A'; /* 文字を数値化する */
showNumber(n); /* 数値のドット絵を表示する */
}
return 0;
}
/* Aを表示 */
void font_A(void){
printf(" ■■ \n");
printf("■ ■\n");
printf("■■■■\n");
printf("■ ■\n");
printf("■ ■\n");
}
/* Bを表示 */
void font_B(void){
printf("■■■ \n");
printf("■ ■\n");
printf("■■■ \n");
printf("■ ■\n");
printf("■■■ \n");
}
/* Cを表示 */
void font_C(void){
printf(" ■■ \n");
printf("■ ■\n");
printf("■ \n");
printf("■ ■\n");
printf(" ■■ \n");
}
/* Dを表示 */
void font_D(void){
printf("■■■ \n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■■■ \n");
}
/* Eを表示 */
void font_E(void){
printf("■■■■\n");
printf("■ \n");
printf("■■■ \n");
printf("■ \n");
printf("■■■■\n");
}
/* Fを表示 */
void font_F(void){
printf("■■■■\n");
printf("■ \n");
printf("■■■ \n");
printf("■ \n");
printf("■ \n");
}
/* Gを表示 */
void font_G(void){
printf(" ■■ \n");
printf("■ \n");
printf("■ ■■\n");
printf("■ ■\n");
printf(" ■■ \n");
}
/* Hを表示 */
void font_H(void){
printf("■ ■\n");
printf("■ ■\n");
printf("■■■■\n");
printf("■ ■\n");
printf("■ ■\n");
}
/* Iを表示 */
void font_I(void){
printf("■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■■■ \n");
}
/* Jを表示 */
void font_J(void){
printf("■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ ■\n");
printf(" ■ \n");
}
/* Kを表示 */
void font_K(void){
printf("■ ■\n");
printf("■ ■ \n");
printf("■■ \n");
printf("■ ■ \n");
printf("■ ■\n");
}
/* Lを表示 */
void font_L(void){
printf("■ \n");
printf("■ \n");
printf("■ \n");
printf("■ \n");
printf("■■■■\n");
}
/* Mを表示 */
void font_M(void){
printf("■ ■\n");
printf("■■ ■■\n");
printf("■ ■ ■\n");
printf("■ ■ ■\n");
printf("■ ■\n");
}
/* Nを表示 */
void font_N(void){
printf("■ ■\n");
printf("■■ ■\n");
printf("■ ■ ■\n");
printf("■ ■■\n");
printf("■ ■\n");
}
/* Oを表示 */
void font_O(void){
printf(" ■■ \n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf(" ■■ \n");
}
/* Pを表示 */
void font_P(void){
printf("■■■ \n");
printf("■ ■\n");
printf("■■■ \n");
printf("■ \n");
printf("■ \n");
}
/* Qを表示 */
void font_Q(void){
printf(" ■■ \n");
printf("■ ■ \n");
printf("■ ■ \n");
printf("■ ■■ \n");
printf(" ■■■■\n");
}
/* Rを表示 */
void font_R(void){
printf("■■■ \n");
printf("■ ■\n");
printf("■■■ \n");
printf("■ ■ \n");
printf("■ ■\n");
}
/* Sを表示 */
void font_S(void){
printf(" ■■■\n");
printf("■ \n");
printf(" ■■ \n");
printf(" ■\n");
printf("■■■ \n");
}
/* Tを表示 */
void font_T(void){
printf("■■■■■\n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
/* Uを表示 */
void font_U(void){
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf(" ■■ \n");
}
/* Vを表示 */
void font_V(void){
printf("■ ■\n");
printf("■ ■\n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
printf(" ■ \n");
}
/* Wを表示 */
void font_W(void){
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■ ■\n");
printf("■ ■ ■\n");
printf(" ■ ■ \n");
}
/* Xを表示 */
void font_X(void){
printf("■ ■\n");
printf("■ ■\n");
printf(" ■■ \n");
printf("■ ■\n");
printf("■ ■\n");
}
/* Yを表示 */
void font_Y(void){
printf("■ ■\n");
printf(" ■ ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
/* Zを表示 */
void font_Z(void){
printf("■■■■■\n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■■■■■\n");
}
/* A~Z以外が入力されたときの表示 */
void font_error(void){
printf(" \n");
printf(" \n");
printf(" ■ \n");
printf(" \n");
printf(" \n");
}
/* 数値のドット絵を表示する関数 */
void showNumber(int n)
{
printf("\n");
switch(n){
case 0:
font_A(); break;
case 1:
font_B(); break;
case 2:
font_C(); break;
case 3:
font_D(); break;
case 4:
font_E(); break;
case 5:
font_F(); break;
case 6:
font_G(); break;
case 7:
font_H(); break;
case 8:
font_I(); break;
case 9:
font_J(); break;
case 10:
font_K(); break;
case 11:
font_L(); break;
case 12:
font_M(); break;
case 13:
font_N(); break;
case 14:
font_O(); break;
case 15:
font_P(); break;
case 16:
font_Q(); break;
case 17:
font_R(); break;
case 18:
font_S(); break;
case 19:
font_T(); break;
case 20:
font_U(); break;
case 21:
font_V(); break;
case 22:
font_W(); break;
case 23:
font_X(); break;
case 24:
font_Y(); break;
case 25:
font_Z(); break;
default: /* A ~ Z以外の文字が入力された場合の表示 */
font_error(); break;
}
}
kaneFont.c
/*
xFont4.c : デジタルフォント
Created by dianxnao.com on 2018/10/16.
*/
#include <stdio.h>
#include <ctype.h>
void showNumber(int);
void showAlpha(int);
void font_0(void);
void font_1(void);
void font_2(void);
void font_3(void);
void font_4(void);
void font_5(void);
void font_6(void);
void font_7(void);
void font_8(void);
void font_9(void);
void font_A(void);
void font_B(void);
void font_C(void);
void font_D(void);
void font_E(void);
void font_F(void);
void font_G(void);
void font_H(void);
void font_I(void);
void font_J(void);
void font_K(void);
void font_L(void);
void font_M(void);
void font_N(void);
void font_O(void);
void font_P(void);
void font_Q(void);
void font_R(void);
void font_S(void);
void font_T(void);
void font_U(void);
void font_V(void);
void font_W(void);
void font_X(void);
void font_Y(void);
void font_Z(void);
void font_error(void);
int main(void)
{
int i, n;
char moji[256];
printf("数値か文字をいれてね: ");
scanf("%s", moji);
/* 入力した文字数分ドット絵を表示する */
for(i=0; moji[i] != '\0'; i++){
if( isdigit(moji[i]) ){
n = moji[i] - '0'; /* 文字を数値化する */
showNumber(n); /* 数値のドット絵を表示する */
}
else if( isalpha(moji[i]) ){
if( islower(moji[i] )){
n = moji[i] - 87; /* 文字を数値化する */
showAlpha(n); /* 数値のドット絵を表示する */
}
else if( isupper(moji[i]) ){
n = moji[i] - 55; /* 文字を数値化する */
showAlpha(n); /* 数値のドット絵を表示する */
}
}
else{
font_error();
}
}
return 0;
}
/* 0を表示 */
void font_0(void){
printf("■■■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf("■■■\n");
}
/* 1を表示 */
void font_1(void){
printf(" ■ \n");
printf("■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■■■\n");
}
/* 2を表示 */
void font_2(void){
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
}
/* 3を表示 */
void font_3(void){
printf("■■■\n");
printf(" ■\n");
printf(" ■■\n");
printf(" ■\n");
printf("■■■\n");
}
/* 4を表示 */
void font_4(void){
printf("■ ■\n");
printf("■ ■\n");
printf("■■■\n");
printf(" ■\n");
printf(" ■\n");
}
/* 5を表示 */
void font_5(void){
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
}
/* 6を表示 */
void font_6(void){
printf("■■■\n");
printf("■ \n");
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
}
/* 7を表示 */
void font_7(void){
printf("■■■\n");
printf("■ ■\n");
printf(" ■\n");
printf(" ■\n");
printf(" ■\n");
}
/* 8を表示 */
void font_8(void){
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
}
/* 9を表示 */
void font_9(void){
printf("■■■\n");
printf("■ ■\n");
printf("■■■\n");
printf(" ■\n");
printf("■■■\n");
}
/* アルファベットを表示 */
void font_A(void){
printf(" ■ \n");
printf(" ■ ■ \n");
printf(" ■■■ \n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
}
void font_B(void){
printf("■■■ \n");
printf("■ ■ \n");
printf("■■■ \n");
printf("■ ■ \n");
printf("■■■ \n");
}
void font_C(void){
printf(" ■■ \n");
printf(" ■ ■\n");
printf(" ■ \n");
printf(" ■ ■\n");
printf(" ■■ \n");
}
void font_D(void){
printf(" ■■ \n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
printf(" ■■ \n");
}
void font_E(void){
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■■■ \n");
}
void font_F(void){
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
void font_G(void){
printf(" ■■ \n");
printf("■ ■ \n");
printf("■ \n");
printf("■ ■■\n");
printf(" ■■ ■\n");
}
void font_H(void){
printf("■ ■\n");
printf("■ ■\n");
printf("■■■■■\n");
printf("■ ■\n");
printf("■ ■\n");
}
void font_I(void){
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■■■ \n");
}
void font_J(void){
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■ ■ \n");
printf(" ■■ \n");
}
void font_K(void){
printf(" ■ ■ \n");
printf(" ■■ \n");
printf(" ■■ \n");
printf(" ■ ■ \n");
printf(" ■ ■\n");
}
void font_L(void){
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■■■■\n");
}
void font_M(void){
printf("■■ ■■\n");
printf("■■ ■■\n");
printf("■ ■ ■\n");
printf("■ ■ ■\n");
printf("■ ■\n");
}
void font_N(void){
printf("■■ ■\n");
printf("■■ ■\n");
printf("■ ■ ■\n");
printf("■ ■■\n");
printf("■ ■■\n");
}
void font_O(void){
printf(" ■■■ \n");
printf("■ ■\n");
printf("■ ■\n");
printf("■ ■\n");
printf(" ■■■ \n");
}
void font_P(void){
printf(" ■■■ \n");
printf(" ■ ■\n");
printf(" ■■■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
void font_Q(void){
printf(" ■■■ \n");
printf("■ ■\n");
printf("■ ■ ■\n");
printf("■ ■ \n");
printf(" ■■ ■\n");
}
void font_R(void){
printf("■■■ \n");
printf("■ ■ \n");
printf("■■■ \n");
printf("■ ■ \n");
printf("■ ■ \n");
}
void font_S(void){
printf(" ■■ \n");
printf("■ ■ \n");
printf(" ■ \n");
printf("■ ■■ \n");
printf(" ■■ \n");
}
void font_T(void){
printf("■■■■■\n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
void font_U(void){
printf("■ ■ \n");
printf("■ ■ \n");
printf("■ ■ \n");
printf("■ ■ \n");
printf(" ■■ \n");
}
void font_V(void){
printf("■ ■\n");
printf("■ ■\n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
printf(" ■ \n");
}
void font_W(void){
printf("■ ■ ■\n");
printf("■ ■ ■\n");
printf("■ ■ ■\n");
printf(" ■ ■ \n");
printf(" ■ ■ \n");
}
void font_X(void){
printf("■ ■\n");
printf(" ■ ■ \n");
printf(" ■ \n");
printf(" ■ ■ \n");
printf("■ ■\n");
}
void font_Y(void){
printf("■ ■\n");
printf(" ■ ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
}
void font_Z(void){
printf("■■■■■\n");
printf(" ■ \n");
printf(" ■ \n");
printf(" ■ \n");
printf("■■■■■\n");
}
void font_error(void){
printf(" \n");
printf(" \n");
printf(" ■ \n");
printf(" \n");
printf(" \n");
}
/* (数字のとき)数値のドット絵を表示する関数 */
void showNumber(int n){
printf("\n");
switch(n){
case 0:
font_0(); break;
case 1:
font_1(); break;
case 2:
font_2(); break;
case 3:
font_3(); break;
case 4:
font_4(); break;
case 5:
font_5(); break;
case 6:
font_6(); break;
case 7:
font_7(); break;
case 8:
font_8(); break;
case 9:
font_9(); break;
}
}
/* (アルファベットのとき)数値のドット絵を表示する関数 */
void showAlpha(int m){
printf("\n");
switch(m){
case 10:
font_A(); break;
case 11:
font_B(); break;
case 12:
font_C(); break;
case 13:
font_D(); break;
case 14:
font_E(); break;
case 15:
font_F(); break;
case 16:
font_G(); break;
case 17:
font_H(); break;
case 18:
font_I(); break;
case 19:
font_J(); break;
case 20:
font_K(); break;
case 21:
font_L(); break;
case 22:
font_M(); break;
case 23:
font_N(); break;
case 24:
font_O(); break;
case 25:
font_P(); break;
case 26:
font_Q(); break;
case 27:
font_R(); break;
case 28:
font_S(); break;
case 29:
font_T(); break;
case 30:
font_U(); break;
case 31:
font_V(); break;
case 32:
font_W(); break;
case 33:
font_X(); break;
case 34:
font_Y(); break;
case 35:
font_Z(); break;
}
}
コメント