Write a program in C that reads two int matrices of the same size from the user
ID: 3699082 • Letter: W
Question
Write a program in C that reads two int matrices of the same size from the user and then perform following operation as per the user input.
+ : this operation performs matrix addition.
- : this operation performs matrix subtraction.
e : this operation ends the program.
Your program should have the following functions
void scan_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns])
void print_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns])
void add(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns])
void sub(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns])
note;use multidimensional array concept dont use malloc or alloc or struct
Example:
Enter Sizes: 3 3
Enter Matrix:
2 4 6
8 9 10
6 7 8
Enter Matrix:
1 2 3
2 3 4
5 6 7
Enter Operation: +
3 6 9
10 12 14
11 13 15
Enter Operation: -
1 2 3
6 6 6
1 1 1
Enter Operation: e
Explanation / Answer
#include <stdio.h>
//prototypes
void scan_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns]);
void print_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns]);
void add(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns]);
void sub(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns]);
int main(void) {
int n_rows,n_columns;
int matrix_1[10][10],matrix_2[10][10],result[10][10];
char op;
printf("Enter Sizes: ");
scanf("%d %d ",&n_rows,&n_columns);
printf(" Enter Matrix 1:");
scan_matrix(n_rows,n_columns,matrix_1);
printf(" Enter Matrix 2:");
scan_matrix(n_rows,n_columns,matrix_2);
printf(" Enter Operation: ");
scanf(" %c",&op);
if(op == '+')
{
add(n_rows,n_columns,matrix_1,matrix_2,result);
printf(" ");
print_matrix(n_rows,n_columns,result);
}
else if(op == '-')
{
sub(n_rows,n_columns,matrix_1,matrix_2,result);
printf(" ");
print_matrix(n_rows,n_columns,result);
}
else
exit(0);
return 0;
}
void scan_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns])
{
int i,j;
for(i=0;i<n_rows;i++)
{
for(j=0;j<n_columns;j++)
{
scanf("%d ",&matrix[i][j]);
}
}
}
void print_matrix(int n_rows, int n_columns, const int matrix[n_rows][n_columns])
{
int i,j;
for(i=0;i<n_rows;i++)
{
for(j=0;j<n_columns;j++)
{
printf("%d ",matrix[i][j]);
}
printf(" ");
}
}
void add(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns])
{
int i,j;
for(i=0;i<n_rows;i++)
{
for(j=0;j<n_columns;j++)
{
result[i][j] = matrix_1[i][j] + matrix_2[i][j];
}
}
}
void sub(int n_rows, int n_columns, const int matrix_1[n_rows][n_columns], const int matrix_2[n_rows][n_columns], int result[n_rows][n_columns])
{
int i,j;
for(i=0;i<n_rows;i++)
{
for(j=0;j<n_columns;j++)
{
result[i][j] = matrix_1[i][j] - matrix_2[i][j];
}
}
}
Output:
Enter Sizes: 3 3
Enter Matrix 1:
2 4 6
8 9 10
6 7 8
Enter Matrix 2:
1 2 3
2 3 4
5 6 7
Enter Operation: +
3 6 9
10 12 14
11 13 15
Do ask if any doubt. Please upvote.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.