📄 editor2numric.cpp
字号:
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 + -