You are on page 1of 4

#include <iostream>

#include <string.h>
#include<conio.h>
using namespace std;

class Fuzzy {
public:
string CF;
float t;
int m=0;
float b;
float power;
float dist;
float concent;
string l1,l2,l3;
//float E=0;
void fuzzification(float power,float dist,float concent){
if (power>1)
power=1;
if( power<0)
power=0;
if (dist>1)
dist=1;
if( dist<0)
dist=0;
if (concent>1)
concent=1;
if( concent<0)
concent=0;

if((power>=0 && power<=1 )&&(dist>=0 && dist<=1)&&(concent>=0 &&


concent<=1)) {

if((power>=0) && power<0.3)


l1="less";
else if((power>=0.3) && (power<0.6))
l1="average";
else if((power>=0.6) && (power<=1))
l1="high";
else
cout<<"wrong input";

if((dist>=0) && (dist<0.3))


l2="near";

else if((dist>=0.3) && (dist<0.6))


l2="far";
else if((dist>=0.6) && (dist<=1))
l2="farthest";
else
cout<<"wrong input";

if((concent>=0) && (concent<0.3))


l3="low";

else if((concent>=0.3) && (concent<0.6))

l3="medium";
else if((concent>=0.6) && (concent<=1))

l3="high";
else
cout<<"wrong input"; }
else
{
m++;
cout<<"exit";
}
}
string fuzzyrule(){
string
cf1="vpoor",cf2="poor",cf3="bavg",cf4="avg",cf5="abavg",cf6="strong",cf7="vstrong";

if((l1=="less") &&(l2=="near") &&(l3=="low")){


CF= cf1; }
else if((l1=="less")&&(l2=="near")&&(l3=="medium")){
CF=cf2;}
else if((l1=="less")&&(l2=="near")&&(l3=="high"))
CF=cf3;
else if((l1=="less")&&(l2=="far")&&(l3=="low"))
CF=cf2;
else if((l1=="less")&&(l2=="far")&&(l3=="medium"))
CF=cf3;
else if((l1=="less")&&(l2=="far")&&(l3=="high"))
CF=cf4;
else if((l1=="less")&&(l2=="farthest")&&(l3=="low"))
CF=cf3;
else if((l1=="less")&&(l2=="farthest")&&(l3=="medium"))
CF=cf4;
else if((l1=="less")&&(l2=="farthest")&&(l3=="high"))
CF=cf5;
else if((l1=="average")&&(l2=="near")&&(l3=="low"))
CF=cf2;
else if((l1=="average")&&(l2=="near")&&(l3=="medium"))
CF=cf3;
else if((l1=="average")&&(l2=="near")&&(l3=="high"))
CF=cf4;
else if((l1=="average")&&(l2=="far")&&(l3=="low"))
CF=cf3;
else if((l1=="average")&&(l2=="far")&&(l3=="medium"))
CF=cf4;
else if((l1=="average")&&(l2=="far")&&(l3=="high"))
CF=cf5;
else if((l1=="average")&&(l2=="farthest")&&(l3=="low"))
CF=cf4;
else if((l1=="average")&&(l2=="far")&&(l3=="medium"))
CF=cf5;
else if((l1=="average")&&(l2=="far")&&(l3=="high"))
CF=cf6;
else if((l1=="high")&&(l2=="near")&&(l3=="low"))
CF=cf3;
else if((l1=="high")&&(l2=="near")&&(l3=="medium"))
CF=cf4;
else if((l1=="high")&&(l2=="near")&&(l3=="high"))
CF=cf5;
else if((l1=="high")&&(l2=="far")&&(l3=="low"))
CF=cf4;
else if((l1=="high")&&(l2=="far")&&(l3=="medium"))
CF=cf5;
else if((l1=="high")&&(l2=="far")&&(l3=="high"))
CF=cf6;
else if((l1=="high")&&(l2=="farthest")&&(l3=="low"))
CF=cf5;
else if((l1=="high")&&(l2=="farthest")&&(l3=="medium"))
CF=cf6;

else if((l1=="high")&&(l2=="farthest")&&(l3=="high"))
CF=cf7;
else{
CF="invalid";
}
return CF;
}
int defuzzication(float power, float dist,float concent,float E){
E=0;
if(CF=="vpoor"){
E=0;
cout<<"\n";
cout<<"the e value is";
cout<<E;}
if(CF=="poor")
t=0.12;
else if(CF=="bavg")
t=0.35;
else if(CF=="avg")
t=0.52;
else if(CF=="abavg")
t=0.76;
else if(CF=="strong")
t=0.9;
else if(CF=="vstrong")
{
E=1;

cout<<E;
}

else{
cout<<"error";
}
cout<<"\n"<<t;
//Fuzzy f11;
if((t>0) &&(t<1))
{

cout<<"\n"<<"haiiii";
//b=(power>dist)?(power>concent?power:concent):(dist>concent?dist:concent);
b=(power>dist && power>concent)?power:(dist > concent ? dist:concent);

cout<<"\n";
cout<<"the b values is";
cout<<b;
E=(b*t)/t;
cout<<"\n";
cout<<E;
}
}
};

int main() {
Fuzzy f1,f2;
int aa;
float E=0;
string l11,l12,l13,ans;
cout << "Please enter your energy: ";
cin >> f1.power;
cout << "Please enter your dist: ";
cin >> f1.dist;
cout << "Please enter your concent: ";
cin >>f1.concent;
f2.fuzzification(f1.power,f1.dist,f1.concent);
if(f1.m==0){

ans=f2.fuzzyrule();
cout<<ans;
f2.defuzzication(f1.power,f1.dist,f1.concent,E);

}
}

You might also like