⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wfun.cpp

📁 改进的JPEG-LS算法
💻 CPP
📖 第 1 页 / 共 3 页
字号:
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 + -