Aktualizovat „du4/program.c“
This commit is contained in:
		
							parent
							
								
									e8f15a894b
								
							
						
					
					
						commit
						e93f2bcae5
					
				@ -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 <stdio.h>
 | 
			
		||||
#include<string.h>
 | 
			
		||||
#include<math.h>
 | 
			
		||||
#include<stdlib.h>
 | 
			
		||||
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{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user