ID非公開さん
2022/1/22 23:36
1回答
このプログラミングの問題がわからないので教えていただきたいです. 関数の名前とその関数に与える引数を入力すると,計算結果を表示する関数電卓
このプログラミングの問題がわからないので教えていただきたいです. 関数の名前とその関数に与える引数を入力すると,計算結果を表示する関数電卓 プログラムを作成せよ.このプログラムは,正弦関数(sin), 指数関数(exp), 絶対値(abs)の 3 つの関数が計算可能である.プログラムの仕様は次の A)~C)の通りとする. A) 計算したい関数の名称を入力する.関数の名称がプログラムで対応していない場合は,“Input a correct function.” を表示して,改めて入力待機の状態に戻る.関数の名称として“exit”が入力されたときは“The function calculator quits.” を表示した後,プログラムを終了する. B) 次に引数を入力する.sin のみ引数の単位は度(degree)とする. C) 計算結果を実行例の形で表示したのち,A)に戻る. なお,関数の名称の判別には strcmp 関数を利用すること.また,計算結果は小数第四位まで出力するものとし,円周率 PI はプリプロセッサ指令(#define)で 3.1415 と定義して使用すること.
ベストアンサー
(ID非公開) 例: #include <stdio.h> #include <string.h> #include <math.h> #define PI 3.1415 double inp(){ double v; printf("number >"); scanf("%lf",&v); return v; } double xsin(double x){ return sin(x*PI/180.0); } double xexp(double x){ return exp(x); } double xabs(double x){ return fabs(x); } #define LINESIZE 256 int main(void) { char s[32]; while(1){ printf("function >"); scanf("%s",s); if(strcmp(s,"exit")==0){ puts("The function calculator quits."); break; }else if(strcmp(s,"sin")==0){ printf("%.4f\n",xsin(inp())); }else if(strcmp(s,"exp")==0){ printf("%.4f\n",xexp(inp())); }else if(strcmp(s,"abs")==0){ printf("%.4f\n",xabs(inp())); }else{ puts("Input a correct function."); } } return 0; } ~~~~~~~~~~~~~~~~~~~~~~~~ function >sin number >30 0.5000 function >exp number >1 2.7183 function >abs number >-1.234 1.2340 function >x Input a correct function. function >exit The function calculator quits.
ID非公開さん
質問者2022/1/23 0:48