📄 functions.h
字号:
int k;
float b[20],D=1,Save[20][20];//b[20]用来存放输入的方程右边常数;Temp用于交换
cout<<"请你输入方程的未知数的个数K:"<<endl;
cin>>k;
m=k;
if(k>=1)
{
cout<<"请你建立方程,依次输入各个方程的未知数前的系数,共有"<<k<<"*"<<k<<"="<<k*k
<<"个数字.(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
for(int i=0;i<k;i++)
{
for(int j=0;j<k;j++)
{
cin>>Rangers[i][j];
if((i==k)||(j==k))
break;
}
}
cout<<"请你输入各个方程等号右边的常数,共有"<<k<<"个.(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
for(i=0;i<k;i++)
{
cin>>b[i];
if(i==k)
break;
}
for(int i4=0;i4<k;i4++)//save rangers[][];
{
for(int j4=0;j4<k;j4++)
{
Save[i4][j4]=Rangers[i4][j4];
}
}
Accunt_Rangers();//已经化为了上三角
D=Sum;
cout<<"你建立的方程的解的情况如下:"<<"\nD="<<Sum<<endl;
for(int i5=0;i5<k;i5++)//get rangers[][].
{
for(int j5=0;j5<k;j5++)
{
Rangers[i5][j5]=Save[i5][j5];
}
}
for(int j=1;j<=k;j++)//KLM
{
for(int i1=0;i1<k;i1++)
{
for(int j1=0;j1<k;j1++)
{
Save[i1][j1]=Rangers[i1][j1];
}
}
for(int i2=0;i2<k;i2++)
{
Rangers[i2][j-1]=b[i2];
}
Accunt_Rangers();
for(int i3=0;i3<k;i3++)
{
for(int j3=0;j3<k;j3++)
{
Rangers[i3][j3]=Save[i3][j3];
}
}
cout<<"D"<<j<<"="<<Sum<<"\nX"<<j<<"="<<"D"<<j<<"/D="<<Sum/D<<endl;
}
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
else
{
cout<<"友情提示:你的输入非法!"
<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
void Output_Rangers()//output Rangers Function为了显示行列格式
{
int i,j,k=0;
if(k==0)
{
for(i=0;i<=(((int)m/2)-1);i++)
{
cout<<"\t\t|";
for(j=0;j<m;j++)
{
if(j==m-1){cout<<Rangers[i][j];}
else {cout<<Rangers[i][j]<<"\t";}
if((i==m)&&(j==m))
break;
}
cout<<"|"<<endl;
}
k=1;
}//output (int)1-----m/2-1
if(k==1)
{
cout<<"\tD=\t|";
for(j=0;j<m;j++)
{
if(j==m-1){cout<<Rangers[(int)m/2][j];}
else {cout<<Rangers[(int)m/2][j]<<"\t";}
}
cout<<"|\n";
k=2;
}//output (int)m/2
if(k==2)
{
for(i=(int)m/2+1;i<m;i++)
{
cout<<"\t\t|";
for(j=0;j<m;j++)
{
if(j==m-1){cout<<Rangers[i][j];}
else {cout<<Rangers[i][j]<<"\t";}
if((i==m)&&(j==m))
break;
}
cout<<"|"<<endl;
}//output (int)m/2+1-----m
}
}
void Change_RangersRow()///行列式互换行的函数体
{
int No1,No2;
cout<<"请输入你要交换的行:(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2;
if((No1>0)&&(No1<=m)&&(No2>0)&&(No2<=m)&&(No1!=No2))
{
float Temp;
for(int i=0;i<m;i++)
{
Temp=Rangers[No1-1][i];
Rangers[No1-1][i]=-Rangers[No2-1][i];
Rangers[No2-1][i]=Temp;
}
cout<<"行列式互换行后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间两不相等整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void Change_RangersCol()///行列式互换列的函数体
{
int No1,No2;
cout<<"请输入你要交换的列:(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2;
if((No1>0)&&(No1<=m)&&(No2>0)&&(No2<=m)&&(No1!=No2))
{
float Temp;
for(int i=0;i<m;i++)
{
Temp=Rangers[i][No1-1];
Rangers[i][No1-1]=Rangers[i][No2-1];
Rangers[i][No2-1]=Temp;
Rangers[0][i]=-Rangers[0][i];
}
cout<<"行列式互换列后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间两不相等整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void DateMul_RangersRow()//数乘加行列式的行
{
int No1,No2;//要乘加的行
float No3;//要乘的数
cout<<"请依次输入要乘的行/要加的行/要乘的数:(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2>>No3;
if((No1>0)&&(No1<=m)&&(No2>0)&&(No2<=m)&&(No1!=No2))
{
for(int i=0;i<m;i++)
{
Rangers[No2-1][i]=No3*Rangers[No1-1][i]+Rangers[No2-1][i];
}
cout<<"数乘加行列式的行后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!第一、二次输入请输入1--"<<m<<"之间两个整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void DateMul_RangersCol()//数乘加行列式的列
{
int No1,No2;//要乘加的列
float No3;//要乘的数
cout<<"请依次输入要乘的列/要加的列/要乘的数:(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2>>No3;
if((No1>0)&&(No1<=m)&&(No2>0)&&(No2<=m)&&(No1!=No2))
{
for(int i=0;i<m;i++)
{
Rangers[i][No2-1]=No3*Rangers[i][No1-1]+Rangers[i][No2-1];
}
cout<<"数乘加行列式的列后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!第一、二次输入请输入1--"<<m<<"之间两个整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void Multiply_RangersCol()//数乘行列式的列
{
int No1;//乘的列
float No2;//乘的数
cout<<"请依次输入要乘的列/要乘的数(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2;
if((No1>0)&&(No1<=m))
{
for(int i=0;i<m;i++)
{
Rangers[i][No1-1]=Rangers[i][No1-1]*No2;
}
cout<<"数乘行列式列的后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!第一次输入请输入1--"<<m<<"之间两个整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void Multiply_RangersRow()//数乘行列式的行
{
int No1;//乘的行
float No2;//乘的数
cout<<"请依次输入要乘的行/要乘的数(输入数字之间用“空格”格开,输入结束后按“回车键”)"<<endl;
cin>>No1>>No2;
if((No1>0)&&(No1<=m))
{
for(int i=0;i<m;i++)
{
Rangers[No1-1][i]=Rangers[No1-1][i]*No2;
}
cout<<"数乘行列式的行后";
Show_Ranges();
}
else
cout<<"友情提示:你的输入非法!第一次输入请输入1--"<<m<<"之间两个整数\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
void Detach_RangersRow()//分拆行函数
{
int No1,k=0;
float First[20],Second[20];
cout<<"请你输入要分拆的行(输入的数字必须是大于0小于行列式的阶数M的整数)"<<endl;
cin>>No1;
if((No1>0)&&(No1<=m))
{
cout<<"请输入"<<2*m<<"个数,每两个数的和为行列式的第"<<No1<<"行各个元素"<<endl;
for(int i=0;i<m;i++)//input
{
cin>>First[i]>>Second[i];
if(First[i]+Second[i]==Rangers[No1-1][i]){k=1;}
else {k=0;}
if(i==m){break;}
}
if(k==1)
{
for(i=0;i<m;i++)
{
Rangers[No1-1][i]=First[i];
}
cout<<"分拆行操作结束后";
Show_Ranges();//print the first ranger
for(i=0;i<m;i++)
{
Rangers[No1-1][i]=Second[i];
}
cout<<"+";
for(int i=0;i<m;i++)//print the ranger
{
cout<<"\t\t|";
for(int j=0;j<m;j++)
{
if(j==m-1)
cout<<Rangers[i][j];
else
cout<<Rangers[i][j]<<"\t";
}
cout<<"|"<<"\n";
}
cout<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
if(k==0)
{
cout<<"友情提示:你输入的相邻两数之和不等于行列式这行对应的元素!请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
else
{
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间的一个整数,请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
void Detach_RangersCol()//分拆列函数
{
int No1,k=0,Temp=0;
float First[20],Second[20];
cout<<"请你输入要分拆的列(输入的数字必须是大于0小于行列式的阶数M的整数)"<<endl;
cin>>No1;
if((No1>0)&&(No1<=m))
{
cout<<"请输入"<<2*m<<"个数,每两个数的和为行列式的第"<<No1<<"列的各个元素"<<endl;
for(int i=0;i<m;i++)//input
{
cin>>First[i]>>Second[i];
if(First[i]+Second[i]==Rangers[i][No1-1]){k=1;}
else {k=0;}
if(i==m){break;}
}
if(k==1)
{
for(int i=0;i<m;i++)
{
Rangers[i][No1-1]=First[i];
}
cout<<"分拆列操作结束后";
Show_Ranges();//print the first ranger
for(i=0;i<m;i++)
{
Rangers[i][No1-1]=Second[i];
}
cout<<"+";
for(i=0;i<m;i++)//print the ranger
{
cout<<"\t\t|";
for(int j=0;j<m;j++)
{
if(j==m-1)
cout<<Rangers[i][j];
else
cout<<Rangers[i][j]<<"\t";
}
cout<<"|"<<"\n";
}
cout<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
if(k==0)
{
cout<<"友情提示:你输入的相邻两数之和不等于行列式这列对应的元素!请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
else
{
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间的一个整数,请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
void Unwrap_RangersROw()//行列式展开行
{
int No1;//存放输入的行数
cout<<"请你输入要展开的行.(输入结束后敲回车键)"<<endl;
cin>>No1;
if((No1>=1)&&(No1<=m))
{
cout<<"D=";
for(int i=0;i<m;i++)
{
cout<<"a"<<No1<<i+1;
if(i<m-1)
{
cout<<"+";
}
}
Accunt_Rangers();
cout<<"="<<Sum
<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
else
{
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间的一个整数,请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
void Unwrap_RangersCol()//行列式展开列
{
int No1;//存放输入的列数
cout<<"请你输入要展开的列.(输入结束后敲回车键)"<<endl;
cin>>No1;
if((No1>=1)&&(No1<=m))
{
cout<<"D=";
for(int i=0;i<m;i++)
{
cout<<"a"<<i+1<<No1;
if(i<m-1)
{
cout<<"+";
}
}
Accunt_Rangers();
cout<<"="<<Sum
<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
else
{
cout<<"友情提示:你的输入非法!请输入1--"<<m<<"之间的一个整数,请重试.\n"
<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
}
}
//////////////////////////////排列和行列式共同有的函数
void FaceCut()//清除屏幕
{
system("cls");
}
void End()//end
{
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -