/* Write a program to perform the following opertations:Addition,multiplication,transpose,magic square & saddle point.*/
#include<stdio.h>
#include<conio.h>
void scan_mat(int (*)[10], int *, int *);
void disp_mat(int (*)[10], int *, int *);
void add_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void mul_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void trans_mat(int (*)[10], int (*)[10], int *, int *);
void saddle_mat(int (*)[10], int *, int *);
void main()
{
char y;
int a[10][10], b[10][10], ans[10][10], n, r1, r2, c1, c2;
clrscr();
printf("Enter row and column for matrix A: ");
scanf("%d%d", &r1, &c1);
printf("Enter elements of matrix A (%dx%d): ", r1, c1);
scan_mat(a, &r1, &c1);
printf("Enter row and column for matrix B: ");
scanf("%d%d", &r2, &c2);
printf("Enter elements of matrix B (%dx%d): ", r2, c2);
scan_mat(b, &r2, &c2);
do
{
clrscr();
printf("Matrix A:\n");
disp_mat(a, &r1, &c1);
printf("Matrix B:\n");
disp_mat(b, &r2, &c2);
printf("\n\nEnter choice:\n1. Addition\n2. Multiplication");
printf("\n3. Transpose\n4.Inverse\n5. Saddle Point\n6. Magic Square");
printf("\nChoice: ");
scanf("%d", &n);
printf("\n");
switch (n)
{
case 1:
if (r1 == r2 && c1 == c2)
{
add_mat(a, b, ans, &r1, &c2);
disp_mat(ans, &r1, &c2);
}
else
printf("\nMatrix Addition not possible");
break;
case 2:
if (r1 == c2)
{
mul_mat(a, b, ans, &r1, &c2);
disp_mat(ans, &r1, &c2);
}
else
printf("\nMatrix Multiplication not possible");
break;
case 3:
printf("Which matrix transpose (a/b): ");
fflush(stdin);
y = getche();
printf("\n");
switch(y)
{
case 'a':
trans_mat(a, ans, &r1, &c1);
disp_mat(ans, &r1, &c1);
break;
case 'b':
trans_mat(b, ans, &r2, &c2);
disp_mat(ans, &r2, &c2);
break;
}
break;
case 4:
/*printf("Which matrix to inverse (a/b): ");
fflush(stdin);
y = getche();
printf("\n");
if (y == 'A' || y == 'a')
{
inv_mat(a, ans);
disp_mat(ans, &r2, &c2);
}
else
if (y == 'B' || y == 'b')
{
inv_mat(b, ans);
disp_mat(ans, &r2, &c2);
}*/
break;
case 5:
printf("Which matrix to find saddle point (a/b): ");
fflush(stdin);
y = getche();
printf("\nSaddle point(s) for the matrix is/are: ");
switch(y)
{
case 'a':
saddle_mat(a,&r1, &c1);
break;
case 'b':
saddle_mat(b,&r2, &c2);
break;
}
break;
}
printf("\n Do U want to continue? (y/n): ");
fflush(stdin);
y = getche();
}
while (y == 'y');
}
void scan_mat(int (*a)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
scanf("%d", &a[i][j]);
}
void disp_mat(int (*a)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
{
for (j = 0; j<*c; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
}
void add_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
ans[i][j] = a[i][j] + b[i][j];
}
void mul_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
int i, j, k;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
{
ans[i][j] = 0;
for (k = 0; k<*c; k++)
ans[i][j] += a[i][k] * b[k][j];
}
}
void trans_mat(int (*a)[10], int (*ans)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
ans[i][j] = a[j][i];
}
void saddle_mat(int (*a)[10], int *r, int *c)
{
int i,j,k,col,min,max;
for (i = 0; i < *r; i++)
{
min = a[i][0];
for (j = 0; j < *c; j++)
if (a[i][j] <= min)
{
min = a[i][j];
col = j;
}
max = a[0][col];
for (k = 0; k < *r; k++)
if (a[k][col] >= max)
{
max = a[k][col];
}
if (max == min)
printf("%d ",a[i][col]);
else
printf("Not present");
}
}
#include<stdio.h>
#include<conio.h>
void scan_mat(int (*)[10], int *, int *);
void disp_mat(int (*)[10], int *, int *);
void add_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void mul_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void trans_mat(int (*)[10], int (*)[10], int *, int *);
void saddle_mat(int (*)[10], int *, int *);
void main()
{
char y;
int a[10][10], b[10][10], ans[10][10], n, r1, r2, c1, c2;
clrscr();
printf("Enter row and column for matrix A: ");
scanf("%d%d", &r1, &c1);
printf("Enter elements of matrix A (%dx%d): ", r1, c1);
scan_mat(a, &r1, &c1);
printf("Enter row and column for matrix B: ");
scanf("%d%d", &r2, &c2);
printf("Enter elements of matrix B (%dx%d): ", r2, c2);
scan_mat(b, &r2, &c2);
do
{
clrscr();
printf("Matrix A:\n");
disp_mat(a, &r1, &c1);
printf("Matrix B:\n");
disp_mat(b, &r2, &c2);
printf("\n\nEnter choice:\n1. Addition\n2. Multiplication");
printf("\n3. Transpose\n4.Inverse\n5. Saddle Point\n6. Magic Square");
printf("\nChoice: ");
scanf("%d", &n);
printf("\n");
switch (n)
{
case 1:
if (r1 == r2 && c1 == c2)
{
add_mat(a, b, ans, &r1, &c2);
disp_mat(ans, &r1, &c2);
}
else
printf("\nMatrix Addition not possible");
break;
case 2:
if (r1 == c2)
{
mul_mat(a, b, ans, &r1, &c2);
disp_mat(ans, &r1, &c2);
}
else
printf("\nMatrix Multiplication not possible");
break;
case 3:
printf("Which matrix transpose (a/b): ");
fflush(stdin);
y = getche();
printf("\n");
switch(y)
{
case 'a':
trans_mat(a, ans, &r1, &c1);
disp_mat(ans, &r1, &c1);
break;
case 'b':
trans_mat(b, ans, &r2, &c2);
disp_mat(ans, &r2, &c2);
break;
}
break;
case 4:
/*printf("Which matrix to inverse (a/b): ");
fflush(stdin);
y = getche();
printf("\n");
if (y == 'A' || y == 'a')
{
inv_mat(a, ans);
disp_mat(ans, &r2, &c2);
}
else
if (y == 'B' || y == 'b')
{
inv_mat(b, ans);
disp_mat(ans, &r2, &c2);
}*/
break;
case 5:
printf("Which matrix to find saddle point (a/b): ");
fflush(stdin);
y = getche();
printf("\nSaddle point(s) for the matrix is/are: ");
switch(y)
{
case 'a':
saddle_mat(a,&r1, &c1);
break;
case 'b':
saddle_mat(b,&r2, &c2);
break;
}
break;
}
printf("\n Do U want to continue? (y/n): ");
fflush(stdin);
y = getche();
}
while (y == 'y');
}
void scan_mat(int (*a)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
scanf("%d", &a[i][j]);
}
void disp_mat(int (*a)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
{
for (j = 0; j<*c; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
}
void add_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
ans[i][j] = a[i][j] + b[i][j];
}
void mul_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
int i, j, k;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
{
ans[i][j] = 0;
for (k = 0; k<*c; k++)
ans[i][j] += a[i][k] * b[k][j];
}
}
void trans_mat(int (*a)[10], int (*ans)[10], int *r, int *c)
{
int i, j;
for (i = 0; i<*r; i++)
for (j = 0; j<*c; j++)
ans[i][j] = a[j][i];
}
void saddle_mat(int (*a)[10], int *r, int *c)
{
int i,j,k,col,min,max;
for (i = 0; i < *r; i++)
{
min = a[i][0];
for (j = 0; j < *c; j++)
if (a[i][j] <= min)
{
min = a[i][j];
col = j;
}
max = a[0][col];
for (k = 0; k < *r; k++)
if (a[k][col] >= max)
{
max = a[k][col];
}
if (max == min)
printf("%d ",a[i][col]);
else
printf("Not present");
}
}
0 comments:
Post a Comment