#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.14159265
int main(void){
char c[128],fnc[128];
double x=0,y,z=0;
double rd=PI/180.0;
printf("関数電卓\n");
printf("sin X, cos X, tan X\n");
printf("exp X, log X, ln X\n");
printf("sqr X, X ^ Y\n");
printf("数値 X:");
gets(c); x=atof(c);
printf("関数:");
gets(fnc);
if(strcmp(fnc,"^")==0){ // strcmpは文字列の比較
printf("数値 Y:");
gets(c); y=atof(c);
}
if(strcmp(fnc,"sin")==0)
{z=sin(x*rd);}
else if(strcmp(fnc,"cos")==0)
{z=cos(x*rd);}
else if(strcmp(fnc,"tan")==0)
{z=tan(x*rd);}
else if(strcmp(fnc,"exp")==0) // exp(x)とは自然対数の底eのx乗, 微分しても値が変わらない
{z=exp(x);}
else if(strcmp(fnc,"log")==0) // 底が10である対数
{z=log10(x);}
else if(strcmp(fnc,"ln")==0) // 底がeである対数
{z=log(x);}
else if(strcmp(fnc,"sqr")==0) // x の y 乗の値
{z=sqrt(x);}
else if(strcmp(fnc,"pow")==0)
{z=pow(x,y);}
else
{printf("関数がありません。\n");}
printf("答え:%4.8f\n\n",z);
return 0;
}
v$ gcc -o main main.c
main.c: In function ‘main’:
main.c:19:2: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]
gets(c); x=atof(c);
^~~~
fgets
/tmp/ccbBDDqy.o: In function `main’:
main.c:(.text+0x93): warning: the `gets’ function is dangerous and should not be used.
main.c:(.text+0x15c): undefined reference to `sin’
main.c:(.text+0x19c): undefined reference to `cos’
main.c:(.text+0x1dc): undefined reference to `tan’
main.c:(.text+0x222): undefined reference to `exp’
main.c:(.text+0x268): undefined reference to `log10′
main.c:(.text+0x2ae): undefined reference to `log’
main.c:(.text+0x2f4): undefined reference to `sqrt’
main.c:(.text+0x343): undefined reference to `pow’
collect2: error: ld returned 1 exit status
あれ??