Code:
void input(int(*x)[10],int*p1,int*p2) //accepting matix from user
{
register int i,j,f;
int*k;
do
{
f=0;
printf("\nenter no. of rows matrix[<=10]::");//no. of rows & validation
scanf("%d",p1);
if(*p1>0&&*p1<=10)
f=0;
else
{
printf("/ninvalid input");
f=1;
}
}
while(f==1);
do
{
f=0;
printf("\nenter no. of colomns for matrix[<=10]::");//no of cloumns &validation for it
scanf("%d",p2);
if(*p2>0&&*p2<=10)
f=0;
else
{
printf("/ninvalid input");
f=1;
}
}while(f==1);
for(i=0;i<*p1;i++)
{
k=x+i;
for(j=0;j<*p2;j++)
{
printf("enter element in %d row and %d coloumn::",i+1,j+1);
scanf("%d",(k+j));
}
}
}
void display(int(*x)[10],int *p1,int *p2)//printing matrix
{
register int i,j;
int*k;
for(i=0;i<*p1;i++)
{
k=x+i;
for(j=0;j<*p2;j++)
{
printf(" %d ",(*(k+j)));
}
printf("\n");
}
}
void add(int (*x)[10],int(*y)[10],int *p1,int *p2) //addition of matrix
{
register int i,j;
int c[10][10],*k,*l,*p;
for(i=0;i<*p1;i++)
{
k=x+i;
l=y+i;
p=c+i;
for(j=0;j<*p2;j++)
{
(*(p+j))=(*(k+j))+(*(l+j));
}
}
display(c,p1,p2);
}
void subs(int(*x)[10],int(*y)[10],int*p1,int*p2)//substrction of matrix
{
register int i,j;
int c[10][10],*k,*l,*p;
for(i=0;i<*p1;i++)
{
k=x+i;
l=y+i;
p=c+i;
for(j=0;j<*p2;j++)
{
(*(p+j))=(*(k+j))-(*(l+j));
}
}
display(c,p1,p2);
}
void mul(int(*x)[10],int(*y)[10],int(*e)[10],int*p1,int*p2,int*p3)//multiplication
{
register int i,j,k;
int sum,*s,*t,*r,z,h;
for(i=0;i<*p1;i++)
{
s=x+i;
r=e+i;
for(j=0;j<*p2;j++)
{
sum=0;
for(k=0;k<*p3;k++)
{
t=y+k;
z=*(s+k);
h=*(y+j);
sum=sum+(z*h);
}
*(r+k)=sum;
}
}
}
int min(int a[],int *p1) //finding minimum from array
{
int temp,i,j;
for(i=0;i<*p1;i++)
{
for(j=0;j<*p1;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
return a[0];
}
int max(int a[],int*p1)//finding maximum of array
{
int temp,i,j;
for(i=0;i<*p1;i++)
{
for(j=0;j<*p1;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[j]=a[j];
a[j]=temp;
}
}
}
return a[0];
}
void sad(int(*c)[10],int*m,int*n) //finding saddle point
{
int i,j,row[10],col[10],temp1[10],temp2[10],y,z,*p,*q;
for(i=0;i<*m;i++)
{
p=c+i;
for(j=0;j<*n;j++)
{
q=c+j;
*(row+j)=*(p+j);
*(col+j)=*(q+i);
}
*(temp1+i)=max(row,n);
*(temp2+i)=min(col,m);
}
y=min(temp1,m);
z=max(temp2,n);
if(y==z)
printf(" %d",y);
else
printf("saddle point is not present");
}
void trans(int(*x)[10],int*m,int*n)//printing transpose
{
int i,j,*p,*q;
int y[10][10];
for(i=0;i<*m;i++)
{
p=x+i;
for (j=0;j<*n;j++)
{
q=y+j;
*(q+i)=*(p+j);
}
}
display(y,n,m);
}
void main()
{
int a[10][10],b[10][10],c[10][10]; //intialisation
void input(int(*)[],int*,int*); //user defined functions
void display(int(*)[],int*,int*);
void add(int(*)[],int(*)[],int*,int*);
void subs(int(*)[],int(*)[],int*,int*);
void mul(int(*)[],int(*)[],int(*)[],int*,int*,int*);
int min(int[],int*);
int max(int[],int*);
void sad(int(*)[],int*,int*);
void trans(int(*)[],int*,int*);
int ch,m,n,m1,n1,flg;
char s;
do
{
clrscr();
printf("\n\n matrix A\n");
input(a,&m,&n);
display(a,&m,&n);
printf("\n\n matrix B\n");
input(b,&m1,&n1);
display(b,&m1,&n1);
flg=0;
clrscr();
printf("\n\n matrix A\n");
display(a,&m,&n);
printf("\n\n matrix B\n");
display(b,&m1,&n1);
printf("\n\nwhich matrix operation want to perform\n\t 1::Addition of matrix\n\t 2::Substraction of matrix\n\t 3::Multiplication of matrix\n\t 4::Find saddle point\n\t 5::Transpose\n\t 6::Exit\n\n Enter choice!!!");
scanf("%d",&ch);
switch(ch) //taking choice
{
case 1: if(m==m1&&n==n1)
{
printf("\n\t addition of given matrices is=\n");
add(a,b,&m,&n);
}
else
{
printf("\n\taddition not possible");
}
break;
case 2:if(m==m1&&n==n1)
{
printf("\n\t substraction of given matrices is=\n");
subs(a,b,&m,&n);
}
else
{
printf("\n\tsubstraction not possible");
}
break;
case 3:if(n==m1)
{
printf("\n\t multiplication of given matrix is=\n");
mul(a,b,c,&m,&n,&n1);
display(c,&m,&n1);
}
else
{
printf("\n\tmultiplication not possible");
}
break;
case 4: printf("\n\tsaddle point in matrix A is=");
sad(a,&m,&n);
printf("\n\n\t sadddle point in matrix B is=");
sad(b,&m1,&n1);
break;
case 5: printf(" trnaspose of matrices are");
printf("\n\n matrix A\n");
trans(a,&m,&n);
printf("\n\n matrix B\n");
trans(b,&m1,&n1);
break;
case 6: printf("do u want to exit?(y/n)");
scanf(" %c",&s);
break;
default: printf("enter valid choice");
}
getch();
if(s=='y')
flg=0;
else
flg=1;
}
while(flg==1);
getch();
}