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

📄 jiefc.cpp

📁 利用vc编程语言解高阶线性方程组
💻 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 + -