c++矩阵乘法

写的有点像matlab,数字之间 可以用逗号或者空格隔开
可运算100X100大小以内的方阵乘法
程序效果
c++矩阵乘法_第1张图片
代码部分:

#include
#include
#include
#include
#include
using namespace std;
int main()
{
	int a[100][100];
	int b[100][100];
	int c[100][100];
	string base;
    getline(cin,base);
	int sizebase=base.size();
	int control=1;
	int control2=1;
	int hang=0,lie=0;
	string number;
	for(int i=0;i<sizebase;i++)
	{
		if(control==1)
		{
			if(base[i]!='['&&base[i]!=']'&&base[i]!=','&&base[i]!=';'&&base[i]!='*'&&base[i]!=' ')
			{
				number.append(base,i,1);
				control2=1;
			}
			if(base[i]==','||base[i]==' ')
			{
				if(control2==1)
				{
					int nu=atoi(number.c_str());
					a[hang][lie]=nu;
					number.erase(number.begin(),number.end());
					lie+=1;control2=0;
				}
			}
			if(base[i]==';')
			{
				if(control2==1)
				{
				int nu=atoi(number.c_str());
				a[hang][lie]=nu;
				number.erase(number.begin(),number.end());
				hang+=1;
				lie=0;control2=0;}
			}
			if(base[i]=='*')
			{
				int nu=atoi(number.c_str());
				a[hang][lie]=nu;
				number.erase(number.begin(),number.end());
				hang=0;
				lie=0;
				control=2;
			}	
		}
		if(control==2)
		{
			if(base[i]!='['&&base[i]!=']'&&base[i]!=','&&base[i]!=';'&&base[i]!='*'&&base[i]!=' ')
			{
				number.append(base,i,1);
				control2=1;
			}
			if(base[i]==','||base[i]==' ')
			{
				if(control2==1)
				{
					int nu=atoi(number.c_str());
					b[hang][lie]=nu;
					number.erase(number.begin(),number.end());
					lie+=1;control2=0;
				}

			}
			if(base[i]==';')
			{
				if(control2==1)
				{
					int nu=atoi(number.c_str());
					b[hang][lie]=nu;
					number.erase(number.begin(),number.end());
					hang+=1;
					lie=0;control2=0;
				}
			}
			if(base[i]==']')
			{
				int nu=atoi(number.c_str());
				b[hang][lie]=nu;
				number.erase(number.begin(),number.end());
			}
		}
	}
	for(int i=0;i<=hang;i++)
	{
		for(int j=0;j<=lie;j++)
		{
			c[i][j]=0;
			for(int k=0;k<=hang;k++)
			{
				c[i][j]=c[i][j]+a[i][k]*b[k][j];
			}
		}
	}
	int max=c[0][0];
	for(int i=0;i<=hang;i++)
	{
		for(int j=0;j<=lie;j++)
		{
			max=max>c[i][j]?max:c[i][j];
		}
	}
	int wei=0;
	while(max!=0)
	{
		max/=10;
		wei+=1;
	}
	wei-=1;
	cout<<"answer="<<endl;
	for(int i=0;i<=hang;i++)
	{
		cout<<'|'<<' ';
		for(int j=0;j<=lie;j++)

		{
			cout<<setw(wei+1)<<setfill(' ')<<a[i][j]<<' ';
		}
		cout<<'|';
		if(i==hang/2)
		{
			cout<<" X ";
		}
		else
		{
			cout<<"   ";
		}
		cout<<'|'<<' ';
		for(int j=0;j<=lie;j++)

		{
			cout<<setw(wei+1)<<setfill(' ')<<b[i][j]<<' ';
		}
		cout<<'|';
		if(i==hang/2)
		{
			cout<<" = ";
		}
		else
		{
			cout<<"   ";
		}
		cout<<'|'<<' ';
		for(int j=0;j<=lie;j++)

		{
			cout<<setw(wei+1)<<setfill(' ')<<c[i][j]<<' ';
		}
		cout<<'|'<<endl;
	}
	system("pause");
	return 0;
}

你可能感兴趣的:(c++矩阵乘法)