こんにちは皆、私はBrian W. Kernighan(著)、Dennis M. Ritchie(著)のCプログラミング言語の本からの質問を試みていました。私は基本的な逆ポーランドの電卓のために私は理解していないが、番号または手紙を見つけるためのCプログラミングの切り替え文
どのようにすべての数字をキャプチャすることができますか?次の質問では、sin
、cos
またはpow
のようなケースを処理するように求められます。私はそれを行う同様の方法があると仮定していますが、説明すれば私はより良い助けになります。
getop
次のオペレータまたは数値オペランドを取得し、push
とpop
は、通常のスタック機能であり、atof
は山車にASCIIに変換します。
#define NUMBER '0'
int type;
double op2;
char s[100];
while ((type = getop(s)) != EOF) {
switch (type) {
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() * pop());
break;
case '-':
op2 = pop();
push(pop() - op2);
break;
case '/':
op2 = pop();
if (op2 != 0.0)
push(pop()/op2);
else
printf("error: zero divisor\n");
break;
case '%':
op2 = pop();
if (op2 != 0.0)
push((int)pop() % (int)op2);
else
printf("error: division by zero\n");
break;
case '\n':
printf("\t%.8g\n", pop());
break;
default:
printf("error: unknown command %s\n", s);
break;
}
}
return 0;
}
私は 'getop()'がその引数 's'が数値であれば' NUMBER'を返すと思います。 – Hasturkun
啓発が来るまで 'switch(type)'行を見てください。 –
@Hasturkunええ私は何が起こったのか見た。 – cv14