李秋红130705010066
解答:
解答:编码序列是:a3a2a2a1a2a1a3a2a2a3
截图:
代码:
#include<stdio.h> #define n 10//定义字符长度 void main() { double Fa[4]={0,0.2,0.5,1.0};//定义映射函数值 double L0=0.0,U0=1.0;//初始化区间(0,1) double Tag=0.63215699,t; double fa_1,fa_2; printf("编码\t\t上界\t\t下界\t\tt值\n"); for(int i=0;i<n;i++) { t=(double)(Tag-L0)/(U0-L0); if(t>=Fa[0]&&t<=Fa[1]) { fa_1=Fa[0]; fa_2=Fa[1]; printf("a1\t\t"); } else if(t>=Fa[1]&&t<=Fa[2]) { fa_1=Fa[1]; fa_2=Fa[2]; printf("a2\t\t"); } else { fa_1=Fa[2]; fa_2=Fa[3]; printf("a3\t\t"); } fa_1=L0+(U0-L0)*fa_1; fa_2=L0+(U0-L0)*fa_2; L0=fa_1; U0=fa_2; printf("%6.5lf\t\t%6.5lf\t\t",fa_2,fa_1);//上下界取5位小数 printf("%9.8lf\n",t);//t值取8位小数 } printf("\n"); }