110 lines
3.3 KiB
C
110 lines
3.3 KiB
C
|
/*
|
||
|
* C program to read two matrices A(MxN) and B(MxN) and perform addition
|
||
|
* OR subtraction of A and B. Also, find the trace of the resultant
|
||
|
* matrix. Display the given matrices, their sum or differences and
|
||
|
* the trace.
|
||
|
*/
|
||
|
#include <stdio.h>
|
||
|
void trace(int arr[][10], int m, int n);
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
int array1[10][10], array2[10][10], arraysum[10][10],
|
||
|
arraydiff[10][10];
|
||
|
int i, j, m, n, option;
|
||
|
printf("Enter the order of the matrix array1 and array2 \n");
|
||
|
scanf("%d %d", &m, &n);
|
||
|
printf("Enter the elements of matrix array1 \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
scanf("%d", &array1[i][j]);
|
||
|
}
|
||
|
}
|
||
|
printf("MATRIX array1 is \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
printf("%3d", array1[i][j]);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
printf("Enter the elements of matrix array2 \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
scanf("%d", &array2[i][j]);
|
||
|
}
|
||
|
}
|
||
|
printf("MATRIX array2 is \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
printf("%3d", array2[i][j]);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
printf("Enter your option: 1 for Addition and 2 for Subtraction \n");
|
||
|
scanf("%d", &option);
|
||
|
switch (option)
|
||
|
{
|
||
|
case 1:
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
arraysum[i][j] = array1[i][j] + array2[i][j];
|
||
|
}
|
||
|
}
|
||
|
printf("Sum matrix is \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
printf("%3d", arraysum[i][j]) ;
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
trace (arraysum, m, n);
|
||
|
break;
|
||
|
case 2:
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
arraydiff[i][j] = array1[i][j] - array2[i][j];
|
||
|
}
|
||
|
}
|
||
|
printf("Difference matrix is \n");
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
printf("%3d", arraydiff[i][j]) ;
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
trace (arraydiff, m, n);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
/* Function to find the trace of a given matrix and print it */
|
||
|
void trace (int arr[][10], int m, int n)
|
||
|
{
|
||
|
int i, j, trace = 0;
|
||
|
for (i = 0; i < m; i++)
|
||
|
{
|
||
|
for (j = 0; j < n; j++)
|
||
|
{
|
||
|
if (i == j)
|
||
|
{
|
||
|
trace = trace + arr[i][j];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
printf("Trace of the resultant matrix is = %d\n", trace);
|
||
|
}
|