# WAP to Calculate the Addition or Subtraction & Trace of 2 Matrices

Levels of difficulty: / perform operation:

This C Program calculates the addition or subtraction & trace of 2 matrices. Here trace of the matrix is the sum of the elements on the main diagonal i.e the diagonal from the upper left to the lower right of a matrix.
Here is source code of the C program to calculates the addition or subtraction & trace of 2 matrices. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

#### Program

```/*
* 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[], int m, int n);
void main() {
int array1, array2, arraysum,
arraydiff;
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");
}
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[], 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);
}```

#### Output

```Enter the order of the matrix array1 and array2
3 3
Enter the elements of matrix array1
2 3 4
7 8 9
5 6 8
MATRIX array1 is
2  3  4
7  8  9
5  6  8
Enter the elements of matrix array2
3 3 3
3 4 6
8 4 7
MATRIX array2 is
3  3  3
3  4  6
8  4  7
1
Sum matrix is
5  6  7
10 12 15
13 10 15
Trace of the resultant matrix is = 32

\$ a.out
Enter the order of the matrix array1 and array2
3 3
Enter the elements of matrix array1
10 20 30
15 18 20
12 14 16
MATRIX array1 is
10 20 30
15 18 20
12 14 16
Enter the elements of matrix array2
1 5 9
10 15 14
9 12 13
MATRIX array2 is
1  5  9
10 15 14
9 12 13