📄 jiefc.cpp
字号:
#include <iostream.h>
void welcome();
void jisuan();
int xiugai();
void chengk(int i, long double k);
void hualie(int i);
void Uhualie(int i);
void print();
void printb();
void chengplus(int i, long double k ,int j);
void exchange(int i, int j);
int hang=3;
int lie=4;
long double a[100][101];
long double b[100][101];
void main()
{
for(int i=0;i<100;i++)
{
for(int j=0;j<101;j++)
{
a[i][j]=0;
}
}
while(1)
{////////////////////////
int choose=0;
cout <<" 1.修改未知数个数。\n";
cout <<" 2.修改方程组系数。\n";
cout <<" 3.输出方程组系数。\n";
cout <<" 4.计算结果。\n";
cout <<" 请选择:";
cin >>choose;
switch(choose)
{
case 1:welcome();break;
case 2:xiugai();break;
case 3:print();break;
case 4:print();jisuan();printb();break;
default:cout <<" 错误\n";
}
}///////////////
}
void chengplus(int i, long double k, int j)
{
for(int t=0;t<lie;t++)
{
b[j-1][t]+=b[i-1][t]*k;
}
}
void print()
{
for(int m=0;m<hang;m++)
{
for(int n=0;n<(lie-2);n++)
{
cout <<a[m][n] <<" x" <<(n+1) <<"+"<<"\t" ;
}
cout <<a[m][lie-2] <<" x" <<(n+1);
cout <<" =" <<a[m][lie-1];
cout <<endl;
}
cout <<"\n";
}
void printb()
{
cout <<"\n";
int testa=0;
int testb=0;
for(int i=0;i<hang;i++)
{
for(int j=0;j<hang;j++)
{
if(b[i][j]!=0){testb+=1;}
}
if(testb==0&&b[i][lie-1]!=0){testa+=1;}
testb=0;
}
if(testa!=0)
{
cout <<" 方程组无解!!\n\n";
}
else
{
cout <<" ";
for(int n=0;n<hang;n++)
{
cout <<"x" <<n+1 <<"=" <<b[n][lie-1] <<" ";
}
cout <<"\n\n";
}
}
void exchange(int i, int j)
{
long double temp=0;
for(int t=0;t<lie;t++)
{
temp=b[i-1][t];
b[i-1][t]=b[j-1][t];
b[j-1][t]=temp;
}
}
void hualie(int i)
{
int jilu=-1;
for(int v=0;v<(hang-i+1);v++)
{
if(b[i-1+v][i-1]!=0)
{
jilu=i+v;
break;
}
}
if(jilu==-1)
{
}
else
{
long double kkk=1;
exchange(i,jilu);
chengk(i,(1.0/b[i-1][i-1]));
for(int w=0;w<(hang-i);w++)
{
if(b[i-1][i-1]!=0)
{
kkk=0.0-(b[i+w][i-1]/b[i-1][i-1]);
chengplus(i,kkk,i+1+w);
}
}
}
}
void Uhualie(int i)
{
if(b[i-1][i-1]!=0)
{
long double kkk=1;
for(int w=0;w<(i-1);w++)
{
if(b[i-1][i-1]!=0)
{
kkk=0.0-(b[i-2-w][i-1]/b[i-1][i-1]);
chengplus(i,kkk,i-1-w);
}
}
}
}
void chengk(int i, long double k)
{
for(int c=0;c<lie;c++)
{
b[i-1][c]=b[i-1][c]*k;
}
}
void welcome()
{
do
{
cout <<"请输入未知数个数:";
cin >>hang;
}while(hang<2||hang>99);
lie=hang+1;
}
void jisuan()
{
for(int i=0;i<100;i++)
{
for(int j=0;j<101;j++)
{
b[i][j]=a[i][j];
}
}
int z=0;
if(hang<lie)
{
z=hang;
}
else
{
z=lie;
}
for(int zi=0;zi<z;zi++)
{
hualie(zi+1);
}
for(int zii=0;zii<z;zii++)
{
Uhualie(z-zii);
}
for(int zck=0;zck<z;zck++)
{
if(b[zck][zck]!=0)
{
chengk(zck+1,(1.0/b[zck][zck]));
}
}
}
int xiugai()
{
cout <<endl;
int ch;
do
{
cout <<"请选择要修改的行(如果要退出修改,请输入888):";
cin >>ch;
if(ch==888)
{
return 1;
}
}while(ch<1||ch>hang);
cout <<"请逐个输入系数……\n";
for(int g=0;g<lie;g++)
{
cout <<"第" <<(g+1) <<"个:";
cin >>a[ch-1][g];
}
cout <<"OK,第" <<ch <<"行修改完毕,请看方程组系数\n";
print();
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -