getexp関数を作る
演算子を入力するgetexp関数を作ってみましょう。
関数の仕様
先に紹介したgetexp関数の仕様を、もう一度確認しておきましょう。
- 機能 :
- 演算子またはQの入力だけを受け付ける。
+-*/と'Q'のいずれかが入力されるまで入力を受け付ける。
- 戻り値 :
- 入力された演算子を返す。
"Q"が入力されたときは記号定数“ERR”を返す。
“ERR”はshort int型の-1とする。
- 宣言 :
- char getexp(void);
具体的な機能とヒント
演算子の入力では、[Enter]なしで1文字のキーを押すだけとします。従って、この関数では1文字の入力にgetch関数を使います。
受け付けるキーは[+][-][*][/][Q][q]のいずれかです。それ以外のキーが押された場合には、「使用できる演算子は + - * / です」というメッセージを表示して、再度キーの入力を受け付けます。
+-*/の四則演算子が押されたらその文字をそのまま返し、Qまたはqが押されたら記号定数の“ERR”を返します。
- ヒント
この処理は、単純なループで構成できます。以下のような形です。
(1) キー入力を受け付ける。
(2) 押されたキーを調べる。
四則演算子なら
→ キーの文字をそのまま返して終了。
Qまたはqなら
→ “ERR”を返して終了。
それ以外なら
→ メッセージを表示して(1)に戻る。
---------------------------------------------------------------------
●問題:getexp関数を作る
では、getexp関数のソースを考えてみましょう。
------------------------ thinking time --------------------------------
●解答
リスト2のようなソースが考えられます。
リスト2:演算子を受け取るgetexp関数のソース
char getexp(void)
{
char c; /* 受け取った演算子 */
while (1) {
printf("演算子([Q]で終了) : ");
c = getch();
printf("%c¥n", c);
/* 入力された値によって戻り値を変える */
if ((c == 'Q') || (c == 'q'))
return (ERR);
else if ((c == '+') || (c == '-') ||¥
(c == '*') || (c== '/'))
return (c);
/* 演算子と'Q'以外なら再入力 */
else
printf("使用できる演算子は + - * / です.¥n");
}
}
|
|
|