00001 #include <stdlib.h> 00002 #include <math.h> 00003 00004 #define FZ_TRIANGLE 0 00005 #define FZ_TRAPEZOID 1 00006 #define FZ_CONST 2 00007 #define FZ_LEFT 3 00008 #define FZ_RIGHT 4 00009 #define FZ_WELL 5 00010 00011 class fuzzy 00012 { 00013 private: 00014 float *fx; 00015 float min,max; 00016 int samples; 00017 00018 public: 00019 fuzzy(); 00020 fuzzy(float min1,float max1,int samples1); 00021 ~fuzzy(); 00022 00023 void setfunction(float f(float)); 00024 void settriangle(float x1,float x2,float x3); 00025 void settrapezoid(float x1,float x2,float x3,float x4); 00026 void setconst(float c); 00027 void setwell(float x1,float x2,float x3,float x4); 00028 void setleft(float x1,float x2); 00029 void setright(float x1,float x2); 00030 void setvalues(float *v); 00031 00032 void setandz(fuzzy &f1,fuzzy &f2); 00033 void setorz(fuzzy &f1,fuzzy &f2); 00034 void setandp(fuzzy &f1,fuzzy &f2); 00035 void setorp(fuzzy &f1,fuzzy &f2); 00036 void setandl(fuzzy &f1,fuzzy &f2); 00037 void setorl(fuzzy &f1,fuzzy &f2); 00038 00039 void setandz(fuzzy &f,float c); 00040 void setorz(fuzzy &f,float c); 00041 void setandp(fuzzy &f,float c); 00042 void setorp(fuzzy &f,float c); 00043 void setandl(fuzzy &f,float c); 00044 void setorl(fuzzy &f,float c); 00045 00046 float value(float x); 00047 float indexvalue(int index); 00048 00049 float centroid(); 00050 float bisector(); 00051 float mom(); 00052 float lom(); 00053 float hom(); 00054 }; 00055 00056 float andz(float c1,float c2); 00057 float orz(float c1,float c2); 00058 float andp(float c1,float c2); 00059 float orp(float c1,float c2); 00060 float andl(float c1,float c2); 00061 float orl(float c1,float c2);