#include<bits/stdc++.h>
using namespace std;
//玻璃的存储定义
typedef struct
{
string str;
//14种化合物
double Sio2;
double Na2O;
double K2O;
double CaO;
double MgO;
double AI2O3;
double Fe2O3;
double CuO;
double PbO;
double BaO;
double P2O5;
double SrO;
double SnO2;
double SO2;
} Element;
Element input[8]; //定义存储表单3的数组
Element FGGlass; //定义风化高钾玻璃
Element FQGlass; //定义风化铅钡玻璃
Element WGGlass; //定义无风化高钾玻璃
Element WQGlass; //定义无风化铅钡玻璃
double GJCnt = 0.0;
double QBCnt = 0.0;
void initF();
void initW();
void inputThreeTable(Element in[]); //输入表单3的数据
void outputThreeTable(Element in[]); //输出表单3的数据
void decision(Element in[]);
void statisticF(Element t);
void statisticW(Element t);
void initF() //初始化风化玻璃的化合物含量
{
FGGlass.Sio2 = 94.56;
FGGlass.Na2O = 0;
FGGlass.K2O = 0.505;
FGGlass.CaO = 0.935;
FGGlass.MgO = 0.32;
FGGlass.AI2O3 = 2.155;
FGGlass.Fe2O3 = 0.26;
FGGlass.CuO = 1.895;
FGGlass.PbO = 0;
FGGlass.BaO = 0;
FGGlass.P2O5=0.305;
FGGlass.SrO = 0;
FGGlass.SnO2 = 0;
FGGlass.SO2 = 0;
FQGlass.Sio2 = 28.525;
FQGlass.Na2O=1.11;
FQGlass.K2O = 0.525;
FQGlass.CaO = 2.48;
FQGlass.MgO = 1.365;
FQGlass.AI2O3 = 7.05;
FQGlass.Fe2O3 = 1.37;
FQGlass.CuO = 5.285;
FQGlass.PbO = 42.96;
FQGlass.BaO = 17.725;
FQGlass.P2O5=7.065;
FQGlass.SrO = 0.56;
FQGlass.SnO2 = 0.655;
FQGlass.SO2 = 7.975;
}
void initW() //初始化非风化玻璃的化合物含量
{
WGGlass.Sio2=73.03;
WGGlass.Na2O=2.74;
WGGlass.K2O=9.86;
WGGlass.CaO=5.36;
WGGlass.MgO=1.25;
WGGlass.AI2O3=7.10;
WGGlass.Fe2O3=3.23;
WGGlass.CuO=2.78;
WGGlass.PbO=1.43;
WGGlass.BaO=1.43;
WGGlass.P2O5=2.33;
WGGlass.SrO=0.08;
WGGlass.SnO2=2.36;
WGGlass.SO2=0.42;
WQGlass.Sio2=53.725;
WQGlass.Na2O=3.96;
WQGlass.K2O=0.355;
WQGlass.CaO=2.31;
WQGlass.MgO=0.835;
WQGlass.AI2O3=7.88;
WQGlass.Fe2O3=2.295;
WQGlass.CuO=4.23;
WQGlass.PbO=23.52;
WQGlass.BaO=14.13;
WQGlass.P2O5=3.17;
WQGlass.SrO=0.455;
WQGlass.SnO2=0.22;
WQGlass.SO2=1.83;
}
void inputThreeTable(Element in[]) //输入表单3的数据
{
for(int i=0; i<8; i++)
{
cin>>in[i].str;
cin>>in[i].Sio2>>in[i].Na2O>>in[i].K2O;
cin>>in[i].CaO>>in[i].MgO>>in[i].AI2O3;
cin>>in[i].Fe2O3>>in[i].CuO>>in[i].PbO;
cin>>in[i].BaO>>in[i].P2O5>>in[i].SrO;
cin>>in[i].SnO2>>in[i].SO2;
}
}
void outputThreeTable(Element in[]) //输出表单3的数据
{
for(int i=0; i<8; i++)
{
cout<<in[i].str<<" ";
cout<<in[i].Sio2<<" "<<in[i].Na2O<<" "<<in[i].K2O
<<" "<<in[i].CaO<<" "<<in[i].MgO<<" "<<in[i].AI2O3
<<" "<<in[i].Fe2O3<<" "<<in[i].CuO<<" "<<in[i].PbO
<<" "<<in[i].BaO<<" "<<in[i].P2O5<<" "<<in[i].SrO
<<" "<<in[i].SnO2<<" "<<in[i].SO2<<endl;
}
}
void decision(Element in[]) //决策函数
{
for(int i=0; i<8; i++)
{
//初始化
GJCnt = 0;
QBCnt = 0;
//统计
if(in[i].str == "风化")
statisticF(in[i]);
else
statisticW(in[i]);
//决策
string s = GJCnt > QBCnt ? "高钾玻璃" : "铅钡玻璃";
//输出
cout<<"A"<<(i+1)<<" = "<<s<<endl;
}
}
void statisticF(Element t) //统计风化的数据
{
//SiO2
if(fabs(t.Sio2-FGGlass.Sio2) < fabs(t.Sio2-FQGlass.Sio2))
GJCnt += 0.9433;
if(fabs(t.Sio2-FGGlass.Sio2) > fabs(t.Sio2-FQGlass.Sio2))
QBCnt += 0.3464;
//Na2O
if(fabs(t.Na2O-FGGlass.Na2O) < fabs(t.Na2O-FQGlass.Na2O))
GJCnt += 0;
if(fabs(t.Na2O-FGGlass.Na2O) > fabs(t.Na2O-FQGlass.Na2O))
QBCnt += 0.0321;
//K2O
if(fabs(t.K2O-FGGlass.K2O) < fabs(t.K2O-FQGlass.K2O))
GJCnt += 0.0082;
if(fabs(t.K2O-FGGlass.K2O) > fabs(t.K2O-FQGlass.K2O))
QBCnt += 0.0040;
//CaO
if(fabs(t.CaO-FGGlass.CaO) < fabs(t.CaO-FQGlass.CaO))
GJCnt += 0.0087;
if(fabs(t.CaO-FGGlass.CaO) > fabs(t.CaO-FQGlass.CaO))
QBCnt += 0.0262;
//MgO
if(fabs(t.MgO-FGGlass.MgO) < fabs(t.MgO-FQGlass.MgO))
GJCnt += 0.0059;
if(fabs(t.MgO-FGGlass.MgO) > fabs(t.MgO-FQGlass.MgO))
QBCnt += 0.0112;
//AI2O3
if(fabs(t.AI2O3-FGGlass.AI2O3) < fabs(t.AI2O3-FQGlass.AI2O3))
GJCnt += 0.0194;
if(fabs(t.AI2O3-FGGlass.AI2O3) > fabs(t.AI2O3-FQGlass.AI2O3))
QBCnt += 0.0397;
//Fe2O3
if(fabs(t.Fe2O3-FGGlass.Fe2O3) < fabs(t.Fe2O3-FQGlass.Fe2O3))
GJCnt += 0.0027;
if(fabs(t.Fe2O3-FGGlass.Fe2O3) > fabs(t.Fe2O3-FQGlass.Fe2O3))
QBCnt += 0.0104;
//CuO
if(fabs(t.CuO-FGGlass.CuO) < fabs(t.CuO-FQGlass.CuO))
GJCnt += 0.0157;
if(fabs(t.CuO-FGGlass.CuO) > fabs(t.CuO-FQGlass.CuO))
QBCnt += 0.0218;
//PbO
if(fabs(t.PbO-FGGlass.PbO) < fabs(t.PbO-FQGlass.PbO))
GJCnt += 0;
if(fabs(t.PbO-FGGlass.PbO) > fabs(t.PbO-FQGlass.PbO))
QBCnt += 0.3804;
//BaO
if(fabs(t.BaO-FGGlass.BaO) < fabs(t.BaO-FQGlass.BaO))
GJCnt += 0;
if(fabs(t.BaO-FGGlass.BaO) > fabs(t.BaO-FQGlass.BaO))
QBCnt += 0.1175;
//P2O5
if(fabs(t.P2O5-FGGlass.P2O5) < fabs(t.P2O5-FQGlass.P2O5))
GJCnt += 0.0034;
if(fabs(t.P2O5-FGGlass.P2O5) > fabs(t.P2O5-FQGlass.P2O5))
QBCnt += 0.0514;
//SrO
if(fabs(t.SrO-FGGlass.SrO) < fabs(t.SrO-FQGlass.SrO))
GJCnt += 0;
if(fabs(t.SrO-FGGlass.SrO) > fabs(t.SrO-FQGlass.SrO))
QBCnt += 0.0042;
//SnO2
if(fabs(t.SnO2-FGGlass.SnO2) < fabs(t.SnO2-FQGlass.SnO2))
GJCnt += 0;
if(fabs(t.SnO2-FGGlass.SnO2) > fabs(t.SnO2-FQGlass.SnO2))
QBCnt += 0.0062;
//SO2
if(fabs(t.SO2-FGGlass.SO2) < fabs(t.SO2-FQGlass.SO2))
GJCnt += 0;
if(fabs(t.SO2-FGGlass.SO2) > fabs(t.SO2-FQGlass.SO2))
QBCnt += 0.0915;
}
void statisticW(Element t) //统计非风化的数据
{
//SiO2
if(fabs(t.Sio2-WGGlass.Sio2) < fabs(t.Sio2-WQGlass.Sio2))
GJCnt += 0.6925;
if(fabs(t.Sio2-WGGlass.Sio2) > fabs(t.Sio2-WQGlass.Sio2))
QBCnt += 0.5784;
//Na2O
if(fabs(t.Na2O-WGGlass.Na2O) < fabs(t.Na2O-WQGlass.Na2O))
GJCnt += 0.0283;
if(fabs(t.Na2O-WGGlass.Na2O) > fabs(t.Na2O-WQGlass.Na2O))
QBCnt += 0.0374;
//K2O
if(fabs(t.K2O-WGGlass.K2O) < fabs(t.K2O-WQGlass.K2O))
GJCnt += 0.1037;
if(fabs(t.K2O-WGGlass.K2O) > fabs(t.K2O-WQGlass.K2O))
QBCnt += 0.0026;
//CaO
if(fabs(t.CaO-WGGlass.CaO) < fabs(t.CaO-WQGlass.CaO))
GJCnt += 0.0652;
if(fabs(t.CaO-WGGlass.CaO) > fabs(t.CaO-WQGlass.CaO))
QBCnt += 0.0122;
//MgO
if(fabs(t.MgO-WGGlass.MgO) < fabs(t.MgO-WQGlass.MgO))
GJCnt += 0.0132;
if(fabs(t.MgO-WGGlass.MgO) > fabs(t.MgO-WQGlass.MgO))
QBCnt += 0.0103;
//AI2O3
if(fabs(t.AI2O3-WGGlass.AI2O3) < fabs(t.AI2O3-WQGlass.AI2O3))
GJCnt += 0.0674;
if(fabs(t.AI2O3-WGGlass.AI2O3) > fabs(t.AI2O3-WQGlass.AI2O3))
QBCnt += 0.0447;
//Fe2O3
if(fabs(t.Fe2O3-WGGlass.Fe2O3) < fabs(t.Fe2O3-WQGlass.Fe2O3))
GJCnt += 0.0236;
if(fabs(t.Fe2O3-WGGlass.Fe2O3) > fabs(t.Fe2O3-WQGlass.Fe2O3))
QBCnt += 0.0146;
//CuO
if(fabs(t.CuO-WGGlass.CuO) < fabs(t.CuO-WQGlass.CuO))
GJCnt += 0.0273;
if(fabs(t.CuO-WGGlass.CuO) > fabs(t.CuO-WQGlass.CuO))
QBCnt += 0.0157;
//PbO
if(fabs(t.PbO-WGGlass.PbO) < fabs(t.PbO-WQGlass.PbO))
GJCnt += 0.0072;
if(fabs(t.PbO-WGGlass.PbO) > fabs(t.PbO-WQGlass.PbO))
QBCnt += 0.2110;
//BaO
if(fabs(t.BaO-WGGlass.BaO) < fabs(t.BaO-WQGlass.BaO))
GJCnt += 0.0146;
if(fabs(t.BaO-WGGlass.BaO) > fabs(t.BaO-WQGlass.BaO))
QBCnt += 0.0930;
//P2O5
if(fabs(t.P2O5-WGGlass.P2O5) < fabs(t.P2O5-WQGlass.P2O5))
GJCnt += 0.0156;
if(fabs(t.P2O5-WGGlass.P2O5) > fabs(t.P2O5-WQGlass.P2O5))
QBCnt += 0.0160;
//SrO
if(fabs(t.SrO-WGGlass.SrO) < fabs(t.SrO-WQGlass.SrO))
GJCnt += 0.0008;
if(fabs(t.SrO-WGGlass.SrO) > fabs(t.SrO-WQGlass.SrO))
QBCnt += 0.0039;
//SnO2
if(fabs(t.SnO2-WGGlass.SnO2) < fabs(t.SnO2-WQGlass.SnO2))
GJCnt += 0.0240;
if(fabs(t.SnO2-WGGlass.SnO2) > fabs(t.SnO2-WQGlass.SnO2))
QBCnt += 0.0024;
//SO2
if(fabs(t.SO2-WGGlass.SO2) < fabs(t.SO2-WQGlass.SO2))
GJCnt += 0.0041;
if(fabs(t.SO2-WGGlass.SO2) > fabs(t.SO2-WQGlass.SO2))
QBCnt += 0.0375;
}
int main()
{
//分类玻璃化合物数据初始化
initW();
initF();
//重定向
freopen("in.txt","r",stdin);
//输入
inputThreeTable(input);
//输出
cout<<"输入数据如下:"<<endl;
outputThreeTable(input);
//决策
cout<<"******************************************************************"<<endl;
decision(input);
return 0;
}
玻璃种类的判断(精确决策)
最新推荐文章于 2023-08-19 21:55:17 发布