#include <iostream.h>




#define max 2   //ضع عدد عناصر المصفوفة هنا


// فصيلة المصفوفة

class   Array
{

public:
	
	Array  () { }
	~Array () { }

	//ادخال المصفوفة 
	void  SetA(int ar[max][max]) ;
	void  SetB(int ar[max][max]) ;


	//طباعة المصفوفة
	void GetA() const;
	void GetB() const;

	//طباعة ضرب المصفوفات
	void  GetMult();



private:

	int A[max][max];
	int B[max][max];
	int C[max][max];


};

void  Array::SetA(int ar[max][max])
{
	cout << " \n ******* Enter Elemaent Array *********\n";

	for( int i=0; i<max; i++ )
	{
		for( int j=0; j<max; j++ )
		{
			cout << "Enter A[" << i+1 << "][" << j+1 << "] : ";
			cin  >> ar[i][j];
			A[i][j] = ar[i][j];
		}
	}
}
		

void  Array::SetB(int ar[max][max])
{
	cout << " \n ******* Enter Elemaent Array *********\n";

	for( int i=0; i<max; i++ )
	{
		for( int j=0; j<max; j++ )
		{
			cout << "Enter A[" << i+1 << "][" << j+1 << "] : ";
			cin  >> ar[i][j];
			B[i][j] = ar[i][j];
		}
	}
}


void Array::GetA() const
{
	for( int i=0; i<max; i++ )
	{
		for( int j=0; j<max; j++ )
		{
			cout << A[i][j] << "\t";
		}
		cout << "\n";
	}
}

void Array::GetB() const
{
	for( int i=0; i<max; i++ )
	{
		for( int j=0; j<max; j++ )
		{
			cout << B[i][j] << "\t";
		}
		cout << "\n";
	}
}


void  Array::GetMult()
{
	int i,j;

	//تخزين القيمة صفر في كل عنصر من عناصر المصفوفة
	for ( i =0; i<max; i++ )
		for( j=0 ;j<max; j++ )
			C[i][j] = 0;


	for(  i=0; i<max; i++ )
	{
		for(  j=0; j<max; j++ )
		{
			for( int k=0; k<max; k++)
				C[i][j] += A[i][k] * B[k][j];
		}
	}


	//طباعة ناتج الضرب للمصفوفتين
	for( i=0; i<max; i++ )
	{
		for( j=0; j<max; j++ )
		{
			cout << C[i][j] << "\t";
		}
		cout << "\n";
	}
}
		



int main()
{
	Array  A;
	int  ar[max][max];



	A.SetA(ar);
	A.SetB(ar);

	cout << "\n   ********** Print Array A ********** \n";
	A.GetA();
	cout << "\n   ********** Print Array B ********** \n";
	A.GetB();
	cout << "\n\n ********** Print A * B   ********** \n\n";
	A.GetMult();
	cout << "\n\n\n";





	return  0;
}