📄 wfun.cpp
字号:
CString DataWaveOut(double *lpD,int MaxL,int Mode,LPCTSTR lpAsc)
{
CString str,s;
int i,j,E_Seat,Seat;
double a,Me,Var,Max,Min,OneAsc;
for(i=0,Max=-99999999999,Min=99999999999;i<MaxL;i++)//求最大最小值
{
if(lpD[i]<Min)Min=lpD[i];
if(lpD[i]>Max)Max=lpD[i];//求最大值
}
if(lpAsc!=NULL)
{
str=lpAsc;
}
for(i=0,Me=0,Var=0;i<MaxL;i++)
{//求均值
Me+=lpD[i];
Var+=lpD[i]*lpD[i];
}
Me/=MaxL;
Var/=MaxL;
Var=sqrt(Var-Me*Me);
if(Mode&_OUT_ME_AND_VAR)
{
s.Format(_T("\r\n均值:%12.6f 方差:%12.6f"),Me,Var);str+=s;
}
if((Mode&_NOT_OUT_DATA_WAVE)==0)
{//输出波形
a=Max-Min;
OneAsc=a/80;
E_Seat=(int)((Me-Min)/OneAsc+1);
s.Format(_T("\r\nMin:%7f"),Min);
str+=s;
for(j=0;j<E_Seat-11-5;j++)str+=_T(" ");
s.Format(_T("Mid:%7f"),Me);
str+=s;
for(j=0;j<80-E_Seat-6;j++)str+=_T(" ");
s.Format(_T("Max:%7f"),Max);
str+=s;
for(i=0;i<MaxL;i++)
{
str+=_T("\r\n");
Seat=(int)((lpD[i]-Me)/OneAsc+0.5);
if(Seat>0)
{
for(j=0;j<E_Seat;j++)str+=_T(" ");
str+=_T("|");
for(j=0;j<Seat-1;j++)str+=_T("-");
str+=_T("*");
}
else if(Seat<0)
{
for(j=0;j<E_Seat+Seat;j++)str+=_T(" ");
str+=_T("*");
for(j=0;j<-(1+Seat);j++)str+=_T("-");
str+=_T("|");
}
else
{
for(j=0;j<E_Seat;j++)str+=_T(" ");
str+=_T("|");
}
}
str+=_T("\r\n");
}
if(Mode&_OUT_DATAWAVE_LIST)
{//输出波形列表
for(i=0;i<MaxL;i++)
{
s.Format(_T("%7f "),lpD[i]);str+=s;
}
str+=_T("\r\n");
}
return str;
}
CString DataWaveOut(int *lpD,int MaxL,int Mode,LPCTSTR lpAsc)
{
CString str,s;
int i,j,E_Seat,Seat,Max,Min;
double a,Me,Var,OneAsc;
for(i=0,Max=-0x7fffffff,Min=0x7fffffff;i<MaxL;i++)//求最大最小值
{
if(lpD[i]<Min)Min=lpD[i];
if(lpD[i]>Max)Max=lpD[i];//求最大值
}
if(lpAsc!=NULL)
{
str=lpAsc;
}
for(i=0,Me=0,Var=0;i<MaxL;i++)
{//求均值
Me+=lpD[i];
Var+=lpD[i]*lpD[i];
}
Me/=MaxL;
Var/=MaxL;
Var=sqrt(Var-Me*Me);
if(Mode&_OUT_ME_AND_VAR)
{
s.Format(_T("\r\n均值:%12.6f 方差:%12.6f"),Me,Var);str+=s;
}
if((Mode&_NOT_OUT_DATA_WAVE)==0)
{//输出波形
a=Max-Min;
OneAsc=a/80;
E_Seat=(int)((Me-Min)/OneAsc+1);
s.Format(_T("\r\nMin:%-7d"),Min);
str+=s;
for(j=0;j<E_Seat-11-5;j++)str+=_T(" ");
s.Format(_T("Mid:%7f"),Me);
str+=s;
for(j=0;j<80-E_Seat-6;j++)str+=_T(" ");
s.Format(_T("Max:%-7d"),Max);
str+=s;
for(i=0;i<MaxL;i++)
{
str+=_T("\r\n");
Seat=(int)((lpD[i]-Me)/OneAsc+0.5);
if(Seat>0)
{
for(j=0;j<E_Seat;j++)str+=_T(" ");
str+=_T("|");
for(j=0;j<Seat-1;j++)str+=_T("-");
str+=_T("*");
}
else if(Seat<0)
{
for(j=0;j<E_Seat+Seat;j++)str+=_T(" ");
str+=_T("*");
for(j=0;j<-(1+Seat);j++)str+=_T("-");
str+=_T("|");
}
else
{
for(j=0;j<E_Seat;j++)str+=_T(" ");
str+=_T("|");
}
}
str+=_T("\r\n");
}
if(Mode&_OUT_DATAWAVE_LIST)
{//输出波形列表
for(i=0;i<MaxL;i++)
{
s.Format(_T("%-7d "),lpD[i]);str+=s;
}
str+=_T("\r\n");
}
return str;
}
CString TableOut(LPCTSTR lpTableText,//表头字符
int Maxl,//表长
BOOL AllowOrder,//允许序号
int bgTab,//起始序号
int *lpD1,
int *lpD2,
int *lpD3,
int *lpD4,
int *lpD5,
int *lpD6,
int *lpD7,
int *lpD8,
int *lpD9,
double *lpD10,
double *lpD11,
double *lpD12,
double *lpD13,
double *lpD14,
double *lpD15,
double *lpD16,
double *lpD17,
double *lpD18)
{
CString str,s;
str.Empty();
int i,j,k,n,TableNum,TableWidth;
int bgText[19],Textl[19],*lpD[19],DataType[19];//对应每一个表项
if(AllowOrder==TRUE)j=1;//0位是序号
else j=0;
if(lpD1!=NULL){lpD[j]=lpD1;DataType[j++]=0;}
if(lpD2!=NULL){lpD[j]=lpD2;DataType[j++]=0;}
if(lpD3!=NULL){lpD[j]=lpD3;DataType[j++]=0;}
if(lpD4!=NULL){lpD[j]=lpD4;DataType[j++]=0;}
if(lpD5!=NULL){lpD[j]=lpD5;DataType[j++]=0;}
if(lpD6!=NULL){lpD[j]=lpD6;DataType[j++]=0;}
if(lpD7!=NULL){lpD[j]=lpD7;DataType[j++]=0;}
if(lpD8!=NULL){lpD[j]=lpD8;DataType[j++]=0;}
if(lpD9!=NULL){lpD[j]=lpD9;DataType[j++]=0;}
if(lpD10!=NULL){lpD[j]=(int *)lpD10;DataType[j++]=1;}
if(lpD11!=NULL){lpD[j]=(int *)lpD11;DataType[j++]=1;}
if(lpD12!=NULL){lpD[j]=(int *)lpD12;DataType[j++]=1;}
if(lpD13!=NULL){lpD[j]=(int *)lpD13;DataType[j++]=1;}
if(lpD14!=NULL){lpD[j]=(int *)lpD14;DataType[j++]=1;}
if(lpD15!=NULL){lpD[j]=(int *)lpD15;DataType[j++]=1;}
if(lpD16!=NULL){lpD[j]=(int *)lpD16;DataType[j++]=1;}
if(lpD17!=NULL){lpD[j]=(int *)lpD17;DataType[j++]=1;}
if(lpD18!=NULL){lpD[j]=(int *)lpD18;DataType[j++]=1;}
if(lpTableText!=NULL)
{
TableWidth=strlen(lpTableText);
str.Format(_T("\r\n"));
for(i=0;i<TableWidth;i++)str+=_T("=");
str+=_T("\r\n");
str+=lpTableText;
for(i=0,TableNum=0,bgText[0]=0;i<TableWidth;i++)//
{//从标题文本中检测各表项的起始与长度,这是推荐的方法
if(lpTableText[i]=='|')
{
if(i==0)
{
bgText[0]=1;
continue;
}
else if(i==(TableWidth-1))break;
Textl[TableNum]=i-bgText[TableNum];
bgText[++TableNum]=i+1;
}
}
Textl[TableNum]=i-bgText[TableNum];TableNum++;
if(AllowOrder==TRUE)//表项数目还是由非空指针最后决定
{
if(TableNum>(j+1))TableNum=j+1;
}
else if(TableNum>j)TableNum=j;
}
else
{//无标题项时,各表项区长度用默认值
if(AllowOrder==TRUE)
{
TableNum=j+1;//表项数由非空指针决定
}
else TableNum=j;
for(i=0,bgText[0]=0;i<TableNum;i++)
{
Textl[i]=12;
bgText[++i]+=13;
}
}
str+=_T("\r\n");
for(i=0;i<TableWidth;i++)str+=_T("=");
for(i=0;i<Maxl;i++)//数据项循环
{
str+=_T("\r\n");
for(j=0;j<TableNum;j++)
{
if(j==0&&AllowOrder==TRUE)
{
s.Format(_T("%d"),bgTab+i);
n=Textl[j]-s.GetLength();
k=0;
if(n>=2)
{
for(;k<(n/2);k++)str+=_T(" ");
}
str+=s;k+=s.GetLength();
if(k<Textl[j])for(;k<Textl[j];k++)str+=_T(" ");
str+=_T("|");
}
else
{
if(DataType[j]==1)
{
s.Format(_T("%16f"),*((double *)lpD[j])+i);
if(Textl[j]<18)s.Delete(Textl[j]-2,16-Textl[j]+2);
}
else
{
s.Format(_T("%d"),*(lpD[j]+i));
}
n=Textl[j]-s.GetLength();
k=0;
if(n>=2)
{
for(;k<(n/2);k++)str+=_T(" ");
}
str+=s;k+=s.GetLength();
if(k<Textl[j])for(;k<Textl[j];k++)str+=_T(" ");
if(j<(TableNum-1))str+=_T("|");
}
}
}
str+=_T("\r\n");
for(i=0;i<TableWidth;i++)str+=_T("=");
str+=_T("\r\n");
return str;
}
void InputRangeData(CString s,double &bg,double &ed,double &step)
{
if(s.GetLength()==0)return;
int k,n,j,j1;
TCHAR asc[256];
strcpy(asc,(LPCTSTR)s);
for(k=0,j=-1,j1=-1,n=s.GetLength();k<n;k++)
{
if(s.GetAt(k)=='-')
{
j=k;
}
else if(s.GetAt(k)==',')
{
j1=k;
}
}
if(j1>j&&j>0)
{
asc[j]='\0';
bg=atof(asc);
asc[j1]='\0';
ed=atof(asc+j+1);
step=atof(asc+j1+1);
}
else
{
if(j>0)
{
asc[j]='\0';
bg=atof(asc);
ed=atof(asc+j+1);
}
else
{
bg=atof(asc);
}
}
}
void InputRangeData(CString s,int &bg,int &ed,int &step)
{
if(s.GetLength()==0)return;
int k,n,j,j1;
TCHAR asc[256];
strcpy(asc,(LPCTSTR)s);
for(k=0,j=-1,j1=-1,n=s.GetLength();k<n;k++)
{
if(s.GetAt(k)=='-')
{
j=k;
}
else if(s.GetAt(k)==',')
{
j1=k;
}
}
if(j1>j&&j>0)
{
asc[j]='\0';
bg=atoi(asc);
asc[j1]='\0';
ed=atoi(asc+j+1);
step=atoi(asc+j1+1);
}
else
{
if(j>0)
{
asc[j]='\0';
bg=atoi(asc);
ed=atoi(asc+j+1);
}
else
{
bg=atoi(asc);
}
}
}
CString GetAppPath()
{
CString Appfil;
LPTSTR lpcomlin=GetCommandLine();
TCHAR asc[4096];
strncpy(asc,lpcomlin,strlen(lpcomlin)+1);
Appfil=asc;
int i,j;
for(i=Appfil.GetLength()-1;i>0;i--)if(Appfil[i]=='\\'||Appfil[i]==':')break;
Appfil.SetAt(++i,'\0');
if(Appfil[0]=='\"')
{
for(j=0;j<i;j++)Appfil.SetAt(j,Appfil[j+1]);
}
return Appfil;
}
void OutOfText(LPCTSTR Text)
{
TCHAR asc[512];
TCHAR filename[256];
CString windpath,lpfil;
strcpy(asc,(LPCTSTR)GetAppPath());
strcpy(asc+strlen(asc),_T("MarkovOut.txt"));
lpfil=asc;
CFile f;
f.Open(asc,CFile::modeCreate|CFile::modeWrite);
f.Write(Text,strlen(Text));
f.Close();
GetWindowsDirectory(filename,256);
windpath=filename;
windpath+=_T("\\NOTEPAD ");
windpath+=lpfil;
WinExec( (LPCTSTR)windpath,SW_SHOWNORMAL);
}
void ArrangeFileName(LPCTSTR *lpFileName,int Number)
{
if(Number<=1)return;
int i,j;
LPCTSTR Str;
for(i=0;i<Number-1;i++)
{
for(j=i+1;j<Number;j++)
{
if(strcmp(lpFileName[i],lpFileName[j])>0)
{
Str=lpFileName[i];
lpFileName[i]=lpFileName[j];
lpFileName[j]=Str;
}
}
}
}
void ArrangeFileName(CString *lpFileName,int Number)
{
if(Number<=1)return;
int i,j;
CString Str;
for(i=0;i<Number-1;i++)
{
for(j=i+1;j<Number;j++)
{
if(strcmp((LPCTSTR)lpFileName[i],(LPCTSTR)lpFileName[j])>0)
{
Str=lpFileName[i];
lpFileName[i]=lpFileName[j];
lpFileName[j]=Str;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -