📄 myheader.cpp
字号:
#include"Myheader.h"
#include<string.h>
#include<iostream.h>
//////////////////////////////////////////////////////////////////
void RankUp(int a[],int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
int b=a[j];
if(b>=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
void RankUp(float a[],float const n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
float b=a[j];
if(b>=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
void RankUp(double a[],int const n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
double b=a[j];
if(b>=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
////////
void RankDown(int a[],int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
int b=a[j];
if(b<=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
void RankDown(double a[],int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
double b=a[j];
if(b<=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
void RankDown(float a[],int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++)
{
float b=a[j];
if(b<=a[j+1])
{
a[j]=a[j+1];
a[j+1]=b;
}
}
}
////////
int RankMax(int a[],int n)
{
int i=0;
int b=a[0];
for(int j=0;j<n-1;j++)
{
int c=a[j+1];
if(b<=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
int RankMax(float a[],int n)
{
int i=0;
float b=a[0];
for(int j=0;j<n-1;j++)
{
float c=a[j+1];
if(b<=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
int RankMax(double a[],int n)
{
int i=0;
double b=a[0];
for(int j=0;j<n-1;j++)
{
double c=a[j+1];
if(b<=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
////////
int RankMin(int a[],int n)
{
int i=0;
int b=a[0];
for(int j=0;j<n-1;j++)
{
int c=a[j+1];
if(b>=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
int RankMin(float a[],int n)
{
int i=0;
float b=a[0];
for(int j=0;j<n-1;j++)
{
float c=a[j+1];
if(b>=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
int RankMin(double a[],int n)
{
int i=0;
double b=a[0];
for(int j=0;j<n-1;j++)
{
double c=a[j+1];
if(b>=c)
{
i=j+1;
b=a[j+1];
}
}
return i;
}
/////////////////////////////////////////////////////
char *StrToCap(char *string)
{
char *t=string;
while(*t)
{
if('a'<=*t&&*t<='z')
(*t)-=32;
t++;
}
return string;
}
char *StrToLow(char *string)
{
char *t=string;
while(*t)
{
if('A'<=*t&&*t<='Z')
(*t)+=32;
t++;
}
return string;
}
char *StrCat(char *strBeCat,char *strcat)
{
char *p=strBeCat,*t=strcat;
while(*p)
{p++;}
while(*t)
{
*p=*t;
t++;
p++;
}
*p=*t;
return strBeCat;
}
void CopyStr(char *©,char *copied)
{
copy=copied;
}
int StrLength(char *string)
{
char *t=string;
int count=0;
do {
t++;count++;}while(*t);
return count;
}
char *SortStrUp(char *string)
{
char *p,*t;
p=t=string;
while(*p)
{
while(*t)
{
char c=*p;
if(*t<*p)
{*p=*t;*t=c;}
t++;
}
p++;
t=p;
}
return string;
}
char *SortStrDown(char *string)
{
char *p,*t;
p=t=string;
while(*p)
{
while(*t)
{
char c=*p;
if(*t>*p)
{*p=*t;*t=c;}
t++;
}
p++;
t=p;
}
return string;
}
///该算法比其他的算法效率要高
int SubStrLoc(char *mainstring,char *substring)
{
int i=1;
char *P=mainstring,*t=substring;
while(*P&&*t)
{
if(*P==*t)
{t++;P++;}
else {t=substring;P++;}
//如果t不匹配
//t 重新赋值
i++;
if(!*t)
return
i-StrLength(substring);
}
return -1;
}
void StrLocDel(char *mainstring,int location,int length)
{
char *p=mainstring,*t=mainstring;
int l=location,le=length,i=1;
if(StrLength(mainstring)<l+le)
{
cout<<"Error!"<<endl;return ;
}
else
{
while(i<l+le)
{
t++;i++;
}//此时t指向l+le+1
i=1;
while(i<l)
{
p++;i++;
}//此时p指向l,i=l;
i=1;
while(*t)
{
*p=*t;
p++,t++;
}
while(i<=StrLength(mainstring)-l-le)
{*p='\0';
p++;i++;}
}
}
char* StrLocIns(char *mainstring,int location, int substringlength,char *substring)
{
char *p=mainstring,*s=substring;
int l=location,le=substringlength,i=1;
if(StrLength(mainstring)<l+le)
{
cout<<"Error!"<<endl;return NULL ;
}
else
{
char *h=new char[le+1];
while(i<l)
{
p++;i++;
}//此时p指向l,i=l;
i=1;
while(i<=le)
{
h[i-1]=*p;
*p=*s;i++;p++;s++;}
h[le]='\0';
char *c=h;
return c;
}
}
int StrCompare(char *str1,char *str2)
{
char *s1=str1,*s2=str2;
do
{
if(*s1>*s2)
return 1;
else if(*s1<*s2)
return -1;
else
{s1++;
s2++;}
}while(*str1&&*str2);
return 0;
}
////////////////////////////////////////////////////////
/////////类CMatrix
void CMatrix::Initial ()
{
cout<<"请输入一个 "<<m<<"X"<<n<<" 矩阵:"<<endl;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
}//end Initial
void CMatrix::Initial (CMatrix &mat)
{
//cout<<"正从另一个矩阵中读得 "<<m<<"X"<<n<<" 数据..."<<endl;
if(m>mat.m||n>mat.n)
cout<<"读取失败!"<<endl;
else
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
a[i][j]=mat.a[i][j];
}//end Initial
//
void CMatrix::Minusrow (int row1,int row2,DERECT beishu)
{
for(int i=0;i<n;i++)
{
a[row1-1][i]-=beishu*a[row2-1][i];
}
}//end Minusrow
void CMatrix::Minuscol( int col1,int col2,DERECT beishu)
{
for(int i=0;i<m;i++)
{
a[i][col1-1]-=beishu*a[i][col2-1];
}
}//end Minuscol
void CMatrix::Plusrow (int row1,int row2,DERECT beishu)
{
for(int i=0;i<n;i++)
{
a[row1-1][i]+=beishu*a[row2-1][i];
}
}//end Plusrow
void CMatrix::Pluscol( int col1,int col2,DERECT beishu)
{
for(int i=0;i<m;i++)
{
a[i][col1-1]+=beishu*a[i][col2-1];
}
}//end Pluscol
void CMatrix::Mulrowself(int row,DERECT beishu)
{
for(int i=0;i<n;i++)
a[row-1][i]*=beishu;
}//end 行自乘
void CMatrix::Mulcolself(int col,DERECT beishu)
{
for(int i=0;i<m;i++)
a[i][col-1]*=beishu;
}//end 列自乘
void CMatrix::Divrowself(int row,DERECT beishu)
{
for(int i=0;i<n;i++)
a[row-1][i]/=beishu;
}//end 行自除
void CMatrix::Divcolself(int col,DERECT beishu)
{
for(int i=0;i<m;i++)
a[i][col-1]/=beishu;
}//end 列自除
CMatrix operator+(CMatrix &mat1,CMatrix &mat2)
{
CMatrix temp(mat2.m,mat2.n);
if(mat1.m!=mat2.m||mat1.n!=mat2.n)
{ cout<<"两矩阵相加行列要相等"<<endl;
return NULL;}
else
{
for(int i=0;i<mat2.m;i++)
for(int j=0;j<mat2.n;j++)
{
temp.a[i][j]=mat1.a[i][j]+mat2.a[i][j];
}
}
return temp;
}//end operator +
CMatrix operator-(CMatrix &mat1,CMatrix &mat2)
{
CMatrix temp(mat1.m,mat1.n);
if(mat1.m!=mat2.m||mat1.n!=mat2.n)
{ cout<<"两矩阵相减行列要相等"<<endl;
return NULL;}
else
{
for(int i=0;i<mat2.m;i++)
for(int j=0;j<mat2.n;j++)
{
temp.a[i][j]=mat1.a[i][j]-mat2.a[i][j];
}
}
return temp;
}//end operator -
void CMatrix::operator=(CMatrix mat)
{
if(m!=mat.m||n!=mat.n)
{cout<<"同型的行列式才能赋值"<<endl;
return ;
}
else
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
a[i][j]=mat.a[i][j];
}
}//end operator =
void CMatrix::Display ()
{
for(int i=0;i<m;i++)
{for(int j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}//end display
ostream& operator <<(ostream &out,CMatrix &b)
{
for(int i=0;i<b.m;i++)
{ for(int j=0;j<b.n;j++)
{out.width (6);
out<<b.a[i][j]<<" ";}
cout<<endl;
}
return out;
}
istream& operator >>(istream &ios,CMatrix &b)
{
cout<<"请输入一个 "<<b.m<<"X"<<b.n<<" 矩阵:"<<endl;
for(int i=0;i<b.m;i++)
{ for(int j=0;j<b.n;j++)
ios>>b.a[i][j];
}
return ios;
}//end cin
DERECT CMatrix:: Derect(CMatrix b,int count)
{
int nn=0;
DERECT bottom=Bot(b);
CMatrix p(b.m,b.n);
p=b;
for(int j=1;j<p.m;j++)
{
if(bottom==0)
{p.Exchangerow (p.m,j);bottom=Bot(p);nn++;
}
else break;
}
if(bottom==0)return 0;
if(count==1)
return bottom;
else
{
CMatrix q(b.m-1,b.n-1);
p.Divrowself (p.m,bottom);//last /
for(int i=1;i<p.m;i++)
{
p.Minusrow (i,p.m,p.a[i-1][p.n-1]);
}
q.Initial (p);
return Mici(-1,nn)*bottom*Derect(q,count-1);
}
}//end Derect
DERECT D(CMatrix b,int jieshu)
{
DERECT de=b.Derect (b,jieshu);
if(0<de&&de<0.000001)
return 0;
else if(de<0&&de>-0.000001)
return 0;
else return de;
}
void CMatrix ::Exchangerow(int row1,int row2)
{
for(int i=0;i<n;i++)
{
DERECT temp=a[row1-1][i];
a[row1-1][i]=a[row2-1][i];
a[row2-1][i]=temp;
}
}
void CMatrix ::Exchangecol(int col1,int col2)
{
for(int i=0;i<m;i++)
{
DERECT temp=a[i][col1-1];
a[i][col1-1]=a[i][col2-1];
a[i][col2-1]=temp;
}
}
CMatrix operator*(CMatrix mat1,CMatrix mat2)
{
if(mat1.n!=mat2.m)
{
cout<<"Error!前一个的列数应等于后一的行数."<<endl;
return NULL;
}
else
{
CMatrix mat(mat1.m,mat2.n);
for(int g=0;g<mat1.m;g++)
for(int k=0;k<mat2.n;k++)
{
DERECT temp=0;
for(int i=0;i<mat1.n;i++)
temp=temp+mat1.a[g][i]*mat2.a[i][k];
mat.a[g][k]=temp;
}return mat;
}
}
CMatrix Tansform(CMatrix mat)
{
CMatrix m(mat.n,mat.m);
for(int i=0;i<mat.m;i++)
for(int j=0;j<mat.n;j++)
m.a[j][i]=mat.a[i][j];
return m;
}
CMatrix operator*(DERECT c,CMatrix mat)
{
CMatrix C(mat.m,mat.n);
C=mat;
for(int i=0;i<mat.m;i++)
C.Mulrowself (i+1,c);
return C;
}
CMatrix Locmatrix(CMatrix mat,int row ,int col)
{
CMatrix M(mat.m,mat.n);M=mat;
CMatrix M2(mat.m-1,mat.n-1);
for(int i=1;i<=(M.m-row);i++)
M.Exchangerow (row+i-1,row+i);
for(int j=1;j<=(M.n-col);j++)
M.Exchangecol (col+j-1,col+j);
M2.Initial (M);
M2.Divrowself (1,Mici(-1,row+col));
return M2;
}
CMatrix Conmatrix(CMatrix mat)
{
CMatrix M(mat.m,mat.n);
if(mat.m==1)
M.a[0][0]=1;
else
for(int i=0;i<mat.m;i++)
for(int j=0;j<mat.n;j++)
M.a[i][j]=D(Locmatrix (mat,i+1,j+1),mat.m-1);
return Tansform (M);
}
CMatrix Nimatrix(CMatrix mat)
{
DERECT X;CMatrix M(mat.m,mat.n);
X=D(mat,mat.m);
if(X==0)
{cout<<"该矩阵的逆矩阵不存在"<<endl;return NULL;}
else
{
M=Conmatrix (mat);
if(mat.m==1)
{M.a[0][0]=1/mat.a[0][0];return M;}
else
return 1/X*M;
}
//return M;
}
bool operator==(CMatrix &mat1,CMatrix &mat2)
{
if(mat1.m!=mat2.m||mat1.n!=mat2.n)
return false;
for(int i=0;i<mat1.m;i++)
for(int j=0;j<mat1.n;j++)
if(mat1.a[i][j]!=mat2.a[i][j])
return false;
return true;
}
CMatrix Micimatrix(CMatrix mat,int k)
{
CMatrix t(mat.m,mat.n);
t=mat;
if(k==1)
t=mat;
else t=mat*Micimatrix (mat,k-1);
return t;
}
CMatrix Elementmatrix(int k)
{
CMatrix t(k,k);
for(int i=0;i<k;i++)
for(int j=0;j<k;j++)
if(i==j)
t.a[i][j]=1;
else
t.a[i][j]=0;
return t;
}
/////////////////////////////////////endl CMatrix
//////////////////////////////////////////////////////////////////////////////
int random(int range)
{
int a=rand();
return a%range;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -