From e93f2bcae5cfeb4b007d5286700f993eea0c20fc Mon Sep 17 00:00:00 2001 From: Bohdan Yanchyk Date: Thu, 2 Apr 2020 23:23:43 +0000 Subject: [PATCH] =?UTF-8?q?Aktualizovat=20=E2=80=9Edu4/program.c=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- du4/program.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/du4/program.c b/du4/program.c index d372d97..bea6389 100644 --- a/du4/program.c +++ b/du4/program.c @@ -1,5 +1,14 @@ +/****************************************************************************** + + Online C Compiler. + Code, Compile, Run and Debug C program online. +Write your code in this editor and press "Run" button to compile and execute it. + +*******************************************************************************/ + #include #include +#include #include char* compactString(char *src,int leng) { char *new_str = (char*)calloc(leng+1,sizeof(char)); @@ -16,16 +25,34 @@ char* compactString(char *src,int leng) { double operation(double first,double second,char c){ + double x =0; if(c=='*'){ - return first*second; + x=first*second; + return x; } else if(c =='-'){ - return first-second; + x=first-second; + return x; } else if(c=='/'){ - return first/second; + x=first/second; + return x; } - return first+second; + x= first+second; + return x; +} + + +double round_to(double value, double eps) +{ + + return floor(value/eps + 0.5) * eps; +} + +double compare_percent(double a, double b, double eps) +{ + double diff = round_to( (a - b) * 2 / (a + b), eps); + return diff < 0 ? -1 : diff > 0 ? +1 : 0; } @@ -36,13 +63,9 @@ int main() memset(str,0,100); fgets(str,100,stdin); char *new_str = compactString(str,strlen(str)); - //printf("%s\n",new_str); double first =-5,second =-5,res=-5; char c='E'; sscanf(new_str,"%lf%c%lf%*[=]%lf",&first,&c,&second,&res); - // printf("%lf %lf %lf",first,second,res); - - if(c=='E'||first==-5||second==-5||res==-5){ @@ -50,7 +73,7 @@ int main() return 0; } double my_res = operation(first,second,c); - if(my_res==res){ + if(compare_percent(res,my_res,0.01)==0){ printf("OK\n"); } else{