1

ユーザーが選択した数学関数 (math.h から) を使用するコードを書いています。私は次のようなものを持っています

printf("If you want to use sin, press 's'\n"
       "If you want to use cosh, press 'c'\n");
do choice = getchar();
while (choice != 's' && choice != 'c');

ユーザーが選択した機能を保存する方法は? 私はそれをいくつかの変数に入れてfun、それを書いて計算で使用しfun(x)たいのですが、これを行う方法がわかりません。助けてください!

4

2 に答える 2

1
double (*proc)(double x) = NULL;
if (choice == 's') proc = sin;
else if (choice == 'c') proc = cosh;
// ...

double y = proc(x):
于 2012-12-08T16:54:50.293 に答える
0

関数ポインタが必要です。関数ポインターは、実行可能なコードへのポインターのようなものです。したがって、たとえば、1 つの double を取り、1 を返すすべての関数 (sin、cos、sqrt、tan、arctan など) を受け取る関数ポインターを使用できます。このような種類のメニュー シーンでは、通常は配列を使用するのが最適です。

double (*funcs)(double)[] = {&sin, &cosh}
char choice;
printf("If you want to use sin, press '1'\n"
       "If you want to use cosh, press '2'\n");
do choice = getchar();
while (choice != '1' && choice != '2');
char choice2[2] = {choice, '\0'};
funcs[atoi(choice2)-1](operand);
于 2012-12-08T17:09:11.530 に答える