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

📄 editor2numric.cpp

📁 故障诊断工作涉及的领域相当广泛
💻 CPP
📖 第 1 页 / 共 2 页
字号:
								 if(the_line<0||the_column<0)
									 {error=TRUE;char sss[]="矩阵维数不能够是负数:第";
									error_input(i+1,&edit,sss,sizeof(sss));
										goto end;
									 }
								 if(the_line*the_column)
								 {bline=TRUE;
								  bcolumn=TRUE;
								 }
								 	line_flag_last|=LINEXCOLUMN;
							}								
							}
				else if(line_flag==NAME)
				{		
					if(mw_name)
								{
								error=TRUE;	char sss[]="矩阵名称反复定义:第";
									bump(i,i+1,&edit,sss,sizeof(sss));
								 	goto end;
							}
						 else
							{
							  if(line_flag_last&LINEXCOLUMN&&the_line>current_line&&bline)
								{error=TRUE;
									char sss[]="矩阵行冲突";
									bump(i-current_line,i,&edit,sss,sizeof(sss));
									goto end;
								 }
							  else if(line_flag_last&DATA)
								{
								  matrix_line[mwn-1]=current_line;
								  current_line=0;
								};
								int here=0;
								for(j=where+1;j<char_count-5;j++)
								*(name[mwn]+here++)=*(line+j);	
								name_length[mwn]=j-where-1;
							//	if(blc)
							//		mwn++;
								blc=FALSE;
								current_line=0;
								the_line=0;
								the_column=0;
								bline=FALSE;
								bcolumn=FALSE;
								mw_name=TRUE;
							}							
							}
				else if(line_flag==NONE)
							{
								if(line_flag_last&DATA)
									{ int count;
										count=line2double(line,char_count,data0,where,real_count);
										if(the_type==type_mw)
											{blc=FALSE;
											if(count!=real_count)
												current_line++;
										 	 if(current_line>the_line&&bline)
												{error=TRUE;char sss[]="矩阵行冲突";
													bump(i-the_line,i,&edit,sss,sizeof(sss));
													goto end;
												 }
											}
										if(bcolumn==TRUE&&the_type==type_mw)//如果是矩阵是否行冲突
											if(count!=real_count&&count-real_count!=the_column)
												{error=TRUE;	char sss[]="矩阵列冲突";
													bump(i,i+1,&edit,sss,sizeof(sss));
													goto end;
												}
										if(count>real_count)
										last_data_line_num=i+1;
										real_count=count;
										if(i==line_count-1)
											{info_length=buffer-buffer0;
										if(!matrix)
											pdata[total_count++].set_data(buffer0,info_length,the_type,real_count,data);
										else if(current_line!=the_line)
											{error=TRUE;char sss[]="矩阵行冲突";
												bump(count_line_num,count_line_num,&edit,sss,sizeof(sss));
												goto end;
											
											}
											else pdata[total_count++].mset_data(buffer0,info_length,the_type,name,name_length,matrix_line,matrix_column,mwn,data);
											}
									}
								if(line_flag_last==INFO)
									{ 
										if(line_flag_last&NONE)
										line_flag_last=INFO;
										for(j=1+where;j<char_count-1;j++)
										*buffer++=*(line+j);
									}
							}
			
			}
	}
end:
	delete[] line;	
	delete[] buffer0;
	delete[] data0;
	for(u=0;u<100;u++)
		delete[] name[u];
	return total_count;
}
 
int editor2numric::analize_line(char* line,int count,int *where)
{static const char maohao[3]=":";
static const char info[6][5]={"信息","类型","数量","数据","行列","名称"};
	int i=0,j,k,l;
	BOOL mao_hao_flag=FALSE;
	int info_flag=0;
	*where=0;
			while(++i<count-1)
				{
					if(*(line+i-1)==maohao[0]&&*(line+i)==maohao[1])
					{
						mao_hao_flag=TRUE;
						*where=i;
					}
				};
		if(!mao_hao_flag)
			{i=0;
				while(++i<count-1)
				{
					if(*(line+i-1)==':')
					{
						mao_hao_flag=TRUE;
						*where=i-1;
					}
				};
			};
			if(mao_hao_flag)
				{
					j=i-4;
					for(k=0;k<6;k++)
						for(l=0;l<*where-4;l++)
							{
								if(info[k][l]==*(line+l)&&info[k][l+1]==*(line+l+1)&&info[k][l+2]==*(line+l+2)&&info[k][l+3]==*(line+l+3))
									{	info_flag=TRUE;
										info_flag<<=k;
										return info_flag;
									}
							};
				};		
	return info_flag;
}

//void CTestDoc::transfer_line(char *line,int line_flag,int line_flag_last)
//{
//	if(line_flag&INFO)
//		if(!line_flag)
	//		line_flag=0;

//}



int editor2numric::line2type(char *line,int char_count, int where)
{static const char  all_type[5][5]={"字符","双字","整数","小数","矩阵"};
	int i,j;
	for(i=0;i<5;i++)
		for(j=where+1;j<char_count-4;j++)
		{if(all_type[i][0]==*(line+j))
			if(all_type[i][1]==*(line+j+1))
				if(all_type[i][2]==*(line+j+2))
					if(all_type[i][3]==*(line+j+3))
						return i;
								
		}
	
	return -1;
}

int editor2numric::line2count(char *line, int char_count,int where)
{ int value;
	char bag[4]={"aaa"},i,l;
	if(char_count-where>3)
		l=3;
	else l=char_count-where;
	for(i=0;i<l;i++)
		bag[i]=*(line+i+where+1);
	value=atoi(bag);
	return value;
}
int editor2numric::line2double(char *line, int char_count,double* data,int where,int count)
{static char douhao[3]=",";
 static char  fenhao[3]=";";
 static char zhenghao[3]="+";
 static char fuhao[3]="-";
 char lead=1;
	BOOL full=FALSE;
	BOOL point=FALSE;
	BOOL sign=FALSE;
	BOOL esign=FALSE;
	BOOL eesign=FALSE;
	char* bag=(char*)malloc(15*sizeof(char));
	memset(bag,0,15);
	int i,j=0,skip=0;
	for(i=where;i+skip<char_count;i++)
		{	if((*(line+i+skip)>='0'&&*(line+i+skip)<='9')||(*(line+i+skip)=='.')||(*(line+i+skip)=='+')||(*(line+i+skip)=='-')||(*(line+i+skip)=='e')||(*(line+i+skip)=='E'))
			{	
				if(((*(line+i+skip)=='e')||(*(line+i+skip)=='E'))&&esign==FALSE)
					{int k=0;
						while((*(line+i+1+skip+k)==' ')||(*(line+i+skip+k+1)=='e')||(*(line+i+skip+k+1)=='E'))
						k++;
						if((*(line+i+skip+k+1)>='0'&&*(line+i+skip+k+1)<='9')||\
							*(line+i+skip+k+1)=='-'||*(line+i+skip+k+1)=='+'||\
							(*(line+i+skip+k+1)==zhenghao[0]&&*(line+i+skip+k+2)==zhenghao[1])||\
							(*(line+i+skip+k+1)==fuhao[0]&&*(line+i+skip+k+2)==fuhao[1]))
						{	*(bag+j++)=*(line+i+skip);
							esign=TRUE;
						}
		
					}
				else if(*(line+i+skip)=='.')
					{if(!point)
						*(bag+j++)='.';
					 else point=TRUE;
					}
				else if(*(line+i+skip)>='0'&&*(line+i+skip)<='9')
					{
						full=TRUE;
						*(bag+j++)=*(line+i+skip);
					}
				else if(*(line+i+skip)=='+'||*(line+i+skip)=='-')
					{	int k=0;
						if(sign==FALSE)
							{while(*(line+i+1+skip+k)==' ')
								k++;
								if((*(line+i+1+skip+k)>='0'&&*(line+i+2+skip+k)<='9')||*(line+i+1+skip+k)>='.')
									if(*(line+i+skip)=='+')
										*(bag+j++)='+';
									else
										*(bag+j++)='-';
								//skip+=k;
								//skip++;
								sign=TRUE;
							}
						else if(esign==TRUE&&eesign==FALSE)
							{while(*(line+i+1+skip+k)==' ')
								k++;
							 if((*(line+i+1+skip+k)>='0'&&*(line+i+2+skip+k)<='9'))
								if(*(line+i+skip+k)==zhenghao[0]&&*(line+i+skip+k+1)==zhenghao[1])
									*(bag+j++)='+';
								else
								*(bag+j++)='-';
								//skip+=k;
								//skip++;
								eesign=TRUE;
							}
				
					}
			}
		else if(*(line+i+skip)==','||*(line+i+skip)==';')
			{if(j>0)
				{
					*(data+count++)=atof(bag);
					memset(bag,0,15);
					j=0;
					point=FALSE;
					sign=FALSE;
					esign=FALSE;
					eesign=FALSE;
				}
			}
		else if((*(line+i+skip)==douhao[0]&&*(line+i+1+skip)==douhao[1])||(*(line+i+skip)==fenhao[0]&&*(line+i+1+skip)==fenhao[1]))
			{if(j>0)
				{
				*(data+count++)=atof(bag);
				memset(bag,0,15);
				j=0;
				point=FALSE;
				sign=FALSE;
				esign=FALSE;
				eesign=FALSE;
				skip++;
				}
			}
		else if((*(line+i+skip)==zhenghao[0]&&*(line+i+1+skip)==zhenghao[1])||(*(line+i+skip)==fuhao[0]&&*(line+i+1+skip)==fuhao[1]))
			{	int k=0;
				if(sign==FALSE)
					{while(*(line+i+2+skip+k)==' ')
						k++;
				   	if((*(line+i+2+skip+k)>='0'&&*(line+i+2+skip+k)<='9'))
						if(*(line+i+skip)==zhenghao[0]&&*(line+i+skip+1)==zhenghao[1])
							*(bag+j++)='+';
						else
							*(bag+j++)='-';
					skip+=k;
					skip++;
					sign=TRUE;
					}
				else if(esign==TRUE&&eesign==FALSE)
					{while(*(line+i+2+skip+k)==' ')
						k++;
				   	if((*(line+i+2+skip+k)>='0'&&*(line+i+2+skip+k)<='9'))
						if(*(line+i+skip+k)==zhenghao[0]&&*(line+i+skip+k+1)==zhenghao[1])
							*(bag+j++)='+';
						else
							*(bag+j++)='-';
					skip+=k;
					skip++;
					eesign=TRUE;
					}
				
			}
		}
//	if(!full)
	//	return count-1;
	return count;
};
int editor2numric::string2double(char *line,int count,double* data)
{
	return line2double(line,count,data,0,0);
};



BOOL editor2numric::is_from_file(char*line,int cnt)
{if(searchfor(line,cnt,"数据来源",sizeof("数据来源")-1)&&\
				searchfor(line,cnt,"文件",sizeof("文件")-1))
				return TRUE;
return FALSE;
}
BOOL editor2numric::searchfor(char *pbuffer,int blth, char *object, int olth)
{
for(int i=0;i<blth-olth;i++)
	for(int j=0;j<olth;j++)
	{if(*(pbuffer+i+j)!=*(object+j))
		break;
		if(j==olth-1)
			return TRUE;
	}
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -