0

C で計算機を実装する必要があります。3 つの引数 (int、char、int) を取得します。ここで、char は +、-、x、または / です。対応する 4 つの関数 (plus(int x, int y) など) を指すジャンプ テーブルを使用して電卓を実装する必要があります。ジャンプ テーブル内の関数にアクセスする方法は知っていますが、switch ステートメントや複数の 'if' を使用して適切な関数を選択することはできません。この問題を解決するために使用できる関数がstring.hにあるというヒントを得ました。

tl;dr: スイッチまたは if を使用せずに string.h の関数を使用して、4 つの異なる文字を 0 から 3 のインデックスに変換する方法は?

4

4 に答える 4

0

あなた自身のジャンプ台はどうですか?

typedef int (*calcfun)(int,int) ;

int plus(int,int) ;
int minus(int,int) ;
int mul(int,int) ;
int div(int,int) ;

calcfun fun[256] ;

void init(void)
{
    fun[(int) '+'] = plus ;
    fun[(int) '-'] = minus ;
    fun[(int) '*'] = mul ;
    fun[(int) '/'] = div ;
}

void (void)
{
     init() ;
     ...
     if (fun[symbol]) 
          result = fun[symbol](x,y) ;
     else printf("invalid op '%c'\n",symbol) ;
}
于 2013-11-11T18:21:11.437 に答える
-1

ここにヒントがあります...

「+」、「-」、「x」、または「/」のいずれか高い方のASCII値と同じ数の要素を持つ配列を持つことができると思います...

于 2013-11-11T14:43:03.037 に答える