用户选择的数学函数

时间:2012-12-08 16:51:16

标签: c input math.h

我正在编写一些应该使用用户选择的数学函数(来自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)在计算中使用它,但不知道如何执行此操作。请帮助!

2 个答案:

答案 0 :(得分:1)

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

double y = proc(x):

答案 1 :(得分:0)

你需要函数指针。函数指针就像指向可以执行的代码的指针。因此,例如,你可以有一个函数指针,它接受所有带一个double并返回一个的函数(例如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);